算法(一) 枚举法

 
枚举法,暴力破解,直接罗列各种情况。
 
例1
题目描述:
古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
 
#include <stdio.h>

#include<string.h>

int main()

{

    int a,b,c,d,e,x; for(a=0; a<=9; a++) for(b=0; b<=9; b++) for(c=0; c<=9; c++) for(d=0; d<=9; d++) for(e=0; e<=9; e++) for(x=0; x<=9; x++) if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e) if((a*10000+b*1000+c*100+d*10+e)*x==e*10000+d*1000+c*100+b*10+a) printf("%d%d%d%d%d",a,b,c,d,e); return 0; }

 

例二

三羊生瑞气

观察一下加法算式,一个汉字代表一个数字,求三羊献瑞代表的数字。

       祥 瑞 生 辉
  +   三 羊 献 瑞
-------------------
   三 羊 生 瑞 气

#include<stdio.h> 

int main()
{
    int a,b,c,d,f,g,h;
    int num1,num2,sum; for(a=2;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(f=0;f<=9;f++) for(g=0;g<=9;g++) for(h=0;h<=9;h++) if(a!=b && a!=c && a!=d && a!=f && a!=g && a!=h && b!=c && b!=d && b!=f && b!= g &&b!=h && c!=d && c!=f && c!= g && c!=h && d!=f && d!=g &&d!=h && f!=g && f!=h && g!=h && a!=1 && b!=1 && c!=1 && d!=1 && f!=1 && g!=1 && h!=1) { num1=a*1000 + b*100 + c*10 + d; num2=1*1000 + f*100 + g*10 + b; sum=1*10000 + f*1000 + c*100 + b*10 + h; if(sum==(num1 + num2)) { printf("1%d%d%d",f,g,b); } } return 0; } 

 

 

 

转载于:https://www.cnblogs.com/p201821440039/p/10513965.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值