当前位置: 代码迷 >> C语言 >> 求算法
  详细解决方案

求算法

热度:394   发布时间:2006-04-01 20:28:00.0
求算法
求算法,有程序更好,题目如下:
a b c d e
+2 0 0 8 5
------------
f g h i j
求abcdefghij分别表示从0到9的一位数字,而且不允许重复使得上面的加法表达式成立的所有组合
搜索更多相关的解决方案: 算法  

----------------解决方案--------------------------------------------------------
最笨的办法就是穷举.从00000到99999.还没想到好的算法.
----------------解决方案--------------------------------------------------------

14982+20085=35067
27951+20085=48036
37941+20085=58026
41973+20085=62058
51963+20085=72048
64932+20085=85017
Press any key to continue

#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int intar[10];
int intNumber, intResult;
bool bMatch;
for (intNumber = 10001; intNumber < 100000; intNumber++)
{
intar[0] = intNumber/10000;
intar[1] = (intNumber/1000)%10;
intar[2] = (intNumber/100)%10;
intar[3] = (intNumber/10)%10;
intar[4] = intNumber%10;

intResult = intNumber + 20085;
if (intResult >= 100000)
continue;

intar[5] = intResult/10000;
intar[6] = (intResult/1000)%10;
intar[7] = (intResult/100)%10;
intar[8] = (intResult/10)%10;
intar[9] = intResult%10;

bMatch = true;
for (int i = 0; i < 10 && bMatch; i++)
{
for (int j = 0; j < 10 && bMatch; j++)
{
if (i==j)
continue;
if (intar[i]==intar[j])
bMatch = false;
}
}
if (bMatch)
cout << intNumber << "+20085=" << intResult << endl;

}
return 0;
}


----------------解决方案--------------------------------------------------------

你用C++,再说这程序也没必要带参运行(很怀疑你的动机)


----------------解决方案--------------------------------------------------------
我的小程序
我也贴个.但由于我是才学C语言,这个比较垃圾.
#include<stdio.h>
main()
{
int a,b,c=9,d,e,f,g,h=0,i,j;
for(e=1;e<=8;e++)
{
j=(e+5)%10;
if(j==e||j==9||j==0) continue;
for(d=1;d<=8;d++)
{
if(d==e||d==j||(d+(e+5)/10+8)<10) continue;
i=(d+(e+5)/10+8)%10;
if(i==d||i==e||i==j||i==9||i==0) continue;
for(b=1;b<8;b++)
{
if(b==i||b==e||b==d||b==j) continue;
g=b+1;
if(g==i||g==e||g==d||g==j) continue;
for(a=1;a<7;a++)
{
if(a==g||a==i||a==b||a==e||a==d||a==j) continue;
f=a+2;
if(f==e||f==b||f==i||f==d||f==g||f==j) continue;
printf("%d%d%d%d%d\n",a,b,c,d,e);
printf("%d%d%d%d%d\n",f,g,h,i,j);
}
}
}
}
getch();
}

----------------解决方案--------------------------------------------------------
  相关解决方案