要将N个项目划分为M个部分(长度在1个单位之内),可以将公式
(N*i+N)/M-(N*i)/M用作
i第n个部分的长度,如下所示。
#include <string> #include <iostream> using namespace std; int main() { string text = "abcdefghijklmnopqrstuvwxyz"; int N = text.length(); for (int M=3; M<14; ++M) { cout <<" length:"<< N <<" parts:"<< M << "n"; int at, pre=0, i; for (pre = i = 0; i < M; ++i) { at = (N+N*i)/M; cout << "part " << i << "t" << pre << "t" << at; cout << "t" << text.substr(pre, at-pre) << "n"; pre = at; } } return 0; }例如,当
M为4或5时,上面的代码将产生:
length:26 parts:4 part 0 0 6 abcdef part 1 6 13 ghijklm part 2 13 19 nopqrs part 3 19 26 tuvwxyz length:26 parts:5 part 0 0 5 abcde part 1 5 10 fghij part 2 10 15 klmno part 3 15 20 pqrst part 4 20 26 uvwxyz



