下面的程序少一组解???????

来源:百度知道 编辑:UC知道 时间:2024/06/16 16:24:02
/*60.1~9分成1:2:3的三个3位数
将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍。问应当怎样分法。*/
#include <iostream>
using namespace std;

int func(int a,int b)
{
if (a/100 == b/100||a/100 ==b%100/10||a/100 == b%100%10||a%100/10 == b/100||a%100/10 ==b%100/10||a%100/10 == b%100%10||a%100%10 == b/100||a%100%10 ==b%100/10||a%100%10 == b%100%10)
{
return 1;
}
}

void main()
{
int iArray[3] = {0};

for ( iArray[0]=100;iArray[0]<1000;iArray[0]++)
{
if (iArray[0]/100 == iArray[0]%100/10||iArray[0]/100 == iArray[0]%100%10||iArray[0]%100/10 == iArray[0]%100%10||iArray[0]/100 ==0||iArray[0]%100/10 ==0||iArray[0]%100%10 ==0)
{
continue;
}

for (iArray[1]=100;iArray[1]<1000;iArray[1]++)
{
if (func(iArray[0],iArray[1])==1||iArray[1]/100 == iArray[1]%100/10||iArray[1]/100 == iArray[1]%100%10||iArray[1]%100/10 == iArray[1]%100%10||iArray[1]/100 ==0||i

你的程序中的错误我没检查出来,我想了个算法,你看看可以不,没编译过,现场写的,不知道是不是对的
#include<stdio.h>
int main()
{
int a[3];
for(int i=1;i<10;i++)
for(int j=1;j<10;j++)
if(i!=j)
for(int k=1;k<10;k++)
if(i!=k && j!=k)
for(int l=1;l<10;l++)
if(i!=l&&j!=l&&k!=l)
for(int m=1;m<10;m++)
if(i!=m&&j!=m&&k!=m&&l!=m)
for(int n=1;n<10;n++)
if(i!=n&&j!=n&&k!=n&&l!=n&&m!=n)
for(int o=1;o<10;o++)
if(i!=o&&j!=o&&k!=o&&l!=o&&m!=o&&n!=o)
for(int p=1;p<10;p++)
if(i!=p&&j!=p&&k!=p&&l!=p&&m!=p&&n! =p&&o!=p)
for(int q=1;q<10;q++) /*用9个FOR循环使9个数每个不重复*/
if(i!=q&&j!=q&&k!=q&&l!=q&&m! =q&&n!=q&&o!=q&&p!=q)
{
a[0]=100*i+10*j+k;
a[1]=100*l+10*m+n;
a[2]=100*o+10*p+q;
if(a[0]<a[1]&&a[1]<a[2])
{
if(a[0]*2==a[1]&&a[0]*3==a [2])
printf("%d:%d:%d=1:2:3\n",a
[0],a[1],a[2]);
}
else g