请问!这个程序的时间复杂度最坏情况下是多少?。。
[code=C/C++]
#include <iostream>
using namespace std;
int main()
{
int m,n,p;
cin >> n >> m;
for (int i=1;i<=n;i++)
{
p=i*m;
while (p>n)
p=p-n+(p-n+1)/(m-1);
cout << p << " ";
}
cout << endl;
return 0;
}
[解决办法]
程序逻辑有问题
while (p>n)
p=p-n+(p-n+1)/(m-1);
如果m=2 那么p只能加到负数为止
[解决办法]
楼主这问题说的很含糊啊。你对m和n的输入值有没有限定啊??如果没有的话,取n为一个很大的值,m为一个负值。会死循环啊!我输入了个n=1000023,m = -3.如果双方都是正数的话,那么最坏情况都小于O(n*m)
[解决办法]
好像还是有问题吧。。p=p-n+(p-n+1)/(m-1)这里如果(p-n+1)/(m-1)大于n,那么p会递增,while循环永远不会结束,是不是还有什么条件?