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((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;
}
- 点赞
- 收藏
- 关注作者
评论(0)