今天下午做题目,刷到循环的题目了,不过让人难受的是,循环没有那么容易,下面是题目:
开始直接思考的就是用一个嵌套,for里面再套一个for循环,这样就成功的把所有的数据都计算了一遍,不过这个算法的运行用次数n的n次方,于是就超时了,超时的算法都不算是好算法,于是我做了有一个改进:
#include<iostream>
using namespace std;
int main()
{
int n, sum=0;
cin >> n;
int i, m = n, k;
for (k = n; m > 1; m--) {
k = k * (m - 1);
}
sum = k;
while(n>1) {
sum += (k / n);
k = k / n;
n--;
}
cout << sum;
return 0;
}
这次的运行次数时2*n次,本以为可以达到要求,但是还是在3,4,结算点出问题了。
后来看到题解里面,有一个人用了四个数组,两个用来存数,一个用来存得到的结果。