我说的顺序无关紧要什么?
在使用常规for循环搜索数字时,我们会遇到“重复”的数字,例如“ 1135”,“ 1315”或“ 5113”
一个很好的例子是数字的总和,其中每个数字 x 都应用了函数 f(x)。
使用x ^ 5假设最多4位数字(只是为了避免相邻值之间出现重叠),而不是像这样搜索:
for (int i=0; i<9999; i++)
return i;
我们可以搜索这样的数字:
0003 0123
0013 1123
0113 0223
1113 1223
0023 2223....
获得
for (int i=0; i<10; i++)
for (int j=0; j<=i; j++)
for (int k=0; k<=j; k++)
for (int l=0; l<=k; l++)
return i*1000+j*100+k*10+l; //returns 4 digit number ijkl
与以前一样,将搜索大小显着减小到了<800 vs 9999。
这可以正常工作,但是当我们处理更高的数字时,必须手动更改代码。
这是我的3个问题:
可以针对模块化更改此代码吗?
是否有更有效的方式来迭代这些数字?
奖励积分:存在重叠时,是否有其他方法可以迭代?
例如:当f(x)= x时1111 == 0002!