您的位置:首页 > 其它

关于SelfNumbers问题时间复杂度问题解决方案

2010-11-30 16:11 344 查看
10000以内的所有数,每位上只可能是0~9四位数,用四层循环便可解决;

   注意:申请数组时一定要注意申请的大小    int  s[10036] = {1};

           之所以会多出来个36,是因为,当循环进行的最后时,是9999+9+9+9+9=10035;

          若定义数组时小于10036,便会发生错误!

思路:定义一个数组,使其初值全为1;当四层循环一次的时候,使  s[ 1001*i+101*j+11*m+2*n] = 0;

          最后在输出的时候只需要 if(s [ i ])  printf("%d",s[i]);便可以!

这样下来时间复杂度明显要比两层循环(每层1000次)要小得多!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐