算法(一) 枚举法

 
枚举法,暴力破解,直接罗列各种情况。
 
例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