C语言解决穷举问题
【摘要】 1.怎么解决穷举问题?用循环,找出问题中所有可能解变化的范围,找出最终解需满足的条件。例题1.找出三位整数中所有的水仙花数。方法1.(用单层循环)代码如下:#include <stdio.h>int main(){ int n,i,j,k; for(n=100;n<1000;n++) { i=n%10; j=n/10%10; k=n/100; if...
1.怎么解决穷举问题?用循环,找出问题中所有可能解变化的范围,找出最终解需满足的条件。
例题1.找出三位整数中所有的水仙花数。
方法1.(用单层循环)
代码如下:#include <stdio.h>
int main()
{ int n,i,j,k;
for(n=100;n<1000;n++)
{ i=n%10;
j=n/10%10;
k=n/100;
if((i*i*i+j*j*j+k*k*k)==n)
printf("%d是水仙花数\n",n);
}
return 0;
}
方法2.(用三重循环)
代码如下:
#include <stdio.h>
int main()
{ int i,j,k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if((i*i*i+j*j*j+k*k*k)==i*100+j*10+k)
printf("%d是水仙花数\n",i*100+j*10+k);
return 0;}
例题2.找出1-1000之间能被7或11整除,但不能同时被7和11整除的所有整数。
分析:找出问题中所有可能解变化的范围;找出最终解需满足的条件;可能解范围1-1000;能被7或11整除,但不能同时被7和11整除。
代码如下:
#include <stdio.h>
int main()
{ int n,k=0;
for(n=1;n<1000;n++)
if(((n%7==0)||(n%11==0))&&(n%77!=0))
{ printf("%5d",n);
k++;
if(k%10==0)
printf("\n");}
return 0;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)