您的位置:首页 > 其它

2017蓝桥杯模拟题 猜算式(暴力枚举)

2017-03-29 21:04 204 查看

猜算式



ps:暴力枚举即可

代码:

#include<stdio.h>
#include<string.h>
int num[15];

int judge(int x)
{
while(x)
{
num[x%10]++;
if(num[x%10]>2)
return 0;
x/=10;
}
return 1;
}

int main()
{
int i,j;
for(i=100;i<=999;i++)
for(j=100;j<=999;j++)
{
memset(num,0,sizeof(num));
int a=i*(j%10);
int b=i*(j/10%10);
int c=i*(j/100%10);
int s=i*j;
if(a>999||b>999||c>999||a<100||b<100||c<100||s>99999||s<10000)
continue;
if(judge(a)&&judge(b)&&judge(c)&&judge(s)&&judge(i)&&judge(j))
printf("a=%d b=%d c=%d s=%d\n",a,b,c,s);
}
return 0;
}


总结:枚举也需要技巧,题目很明显是枚举两个数,而我刚开始一个一个枚举写了九重for循环,最后也不知道哪里有bug,就是输不出数

所以,枚举应该尽量少的枚举,可以适当加一些剪枝
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: