| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2760 人关注过本帖, 2 人收藏
标题:关于计算ABCDE*F=EDCBA的方法 有没有更好的办法啊 我的代码虽然能计算出 ...
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(2)
已结贴  问题点数:20 回复次数:1 
关于计算ABCDE*F=EDCBA的方法 有没有更好的办法啊 我的代码虽然能计算出正确的结果 感觉有些笨重呢
程序代码:
#include<stdio.h>

int main()
{
    int i,j,k,tmp1,tmp2,in1,in2;
    int t1[5]={0,0,0,0,0};
    int t2[5]={0,0,0,0,0};
    for(i=10000;i<99999;i++)
    {
       for(j=2;j<10;j++)
       {
           k=i*j;
           if(k>99999) continue;
           tmp1=i;
           tmp2=k;
           in1=0;
           in2=0;
           //对乘数进行拆解  例如把12345拆解成1,2,3,4,5
           while(tmp1>0)
           {
               t1[in1]=tmp1%10;
               tmp1/=10;
               in1++;
           }
           //对乘积进行拆解  例如把12345拆解成1,2,3,4,5
           while(tmp2>0)
           {
               t2[in2]=tmp2%10;
               tmp2/=10;
               in2++;
           }
           if(t1[0]==t2[4] && t1[1]==t2[3] && t1[2]==t2[2] && t1[3]==t2[1] && t1[4]==t2[0])
           {
               if(t1[0]!=t1[1] && t1[0]!=t1[2] && t1[0]!=t1[3] && t1[0]!=t1[4] && t1[0]!=j)
               {
                   if(t1[1]!=t1[2] && t1[1]!=t1[3] && t1[1]!=t1[4] && t1[1]!=j)
                   {
                       if(t1[2]!=t1[3] && t1[2]!=t1[4] && t1[2]!=j)
                       {
                           if(t1[3]!=t1[4] && t1[3]!=j)
                           {
                               if(t1[4]!=j)
                               {
                                 printf("%d*%d=%d\n",i,j,k);
                               }
                           }
                       }
                   }
               }

           }
       }
    }

}
2013-12-10 11:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2013-12-10 14:35:24的发言:

呵呵既然韶志给了这么高的评价,那就参与一下
#include <stdio.h>

void cal(int n, int a, int b)
{
    static int f[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    const int e[] = {1, 10, 100, 1000, 10000};
    int t, i;
    if(n == 5)
    {
        if(!(b % a) && (t = b / a) < 10)
            printf("%d * %d = %d\n", a, t, b);
        return;
    }
    for(i = n; i < 10; i++)
    {
        t = f[n]; f[n] = f; f = t;
        cal(n + 1, a * 10 + f[n], b + f[n] * e[n]);
        t = f[n]; f[n] = f; f = t;
    }
}

int main()
{
    cal(0, 0, 0);
    return 0;
}

编程思想很重要  杨兄弟的代码  越是简洁 越是难以读懂

DO IT YOURSELF !
2013-12-11 08:26
快速回复:关于计算ABCDE*F=EDCBA的方法 有没有更好的办法啊 我的代码虽然能计 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032715 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved