填数字的问题
用1到9这九个数组成等式,〇/〇〇+ 〇/〇〇+〇/〇〇=1,每个数字只用一次
我只会用笨方法,
#include <stdio.h>
#include <time.h>
int main(int argc, char *argv[])
{
double t1=clock();
int a,b,c,d,e,f,g,h,i;
for (a=1;a<=9;a++)
for (b=1;b<=9;b++)
for (c=1;c<=9;c++)
for (d=1;d<=9;d++)
for (e=1;e<=9;e++)
for (f=1;f<=9;f++)
for (g=1;g<=9;g++)
for (h=1;h<=9;h++)
for (i=1;i<=9;i++)
if (b != a && c != a && c != b && d != a && d != b && d != c && e != a &&
e != b && e != c && e != d && f != a && f != b && f != c && f != d &&
f != e && g != a && g != b && g != c && g != d && g != e && g != f &&
h != a && h != b && h != c && h != d && h != e && h != f && h != g &&
i != a && i != b && i != c && i != d && i != e && i != f && i != g &&
i != h)
if (a/(10.*b+c)+d/(10.*e+f)+g/(10.*h+i)==1)
printf("%d %d %d %d %d %d %d %d %d\n", a,b,c,d,e,f,g,h,i);
printf("%fs\n", (clock()-t1)/1000);
return 0;
}
#include <stdio.h>
#include <algorithm>
#include <functional>
using namespace std ;
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9};
do
{
int ef = a[4]*10+a[5];
int bc =a[1]*10+a[2];
int hi =a[7]*10+a[8];
if (a[0]*ef*hi+a[3]*bc*hi+a[6]*bc * ef ==bc*ef*hi )
{
printf("%d/%d+%d/%d+%d/%d=1\n",a[0],bc,a[3],ef,a[6],hi);
}
}while (next_permutation(a,a+9));
getchar();
return 0;
}