august 发表于 2009-2-27 23:58:08

问个程序的时间复杂度


#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;
}


这样时间复杂度应该是什么呢?

lw 发表于 2009-2-28 09:10:57

这句:
if((i*i+ (sqrt(n-i*i))*sqrt(n-i*i)) == n)
感觉起来就是 n == n ,当然前提是 n> i*i ……

所以这样的话一定就是直接BREAK了吧?
页: [1]
查看完整版本: 问个程序的时间复杂度