问个程序的时间复杂度
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,t=0,n,m;
scanf("%d",&n);
for(i=sqrt(n-1);i>=sqrt(n/2);i--)
if((i*i+(sqrt(n-i*i))*sqrt(n-i*i))==n)
{
m = sqrt(n-i*i);
printf("%d=%d*%d+%d*%d\n",n,i,i,m,m);
t = 1;break;
if(t==0) printf("none!");
}
return 0;
}
这样时间复杂度应该是什么呢? 这句:
if((i*i+ (sqrt(n-i*i))*sqrt(n-i*i)) == n)
感觉起来就是 n == n ,当然前提是 n> i*i ……
所以这样的话一定就是直接BREAK了吧?
页:
[1]