首页 > 代码库 > 「糟糕」再写这么乱且无用的代码,罚自己不吃午饭

「糟糕」再写这么乱且无用的代码,罚自己不吃午饭

用1、2、3、4、5、6组成一个乘法算式。要求每个数字只能使用一次,乘数为一位数

 1 #include<stdio.h>
 2 int i;
 3 int ss[2],dd[6];
 4 void px(int q,int w)
 5 {
 6     ss[0]=q*10+w;
 7     ss[1]=w*10+q;
 8 }
 9 void zx(int q,int w,int e)
10 {
11     int f,m;
12     int cc[3];
13     for(f=0;f<6;f++)
14         dd[f]=1;
15     dd[q-1]=0;dd[w-1]=0;dd[e-1]=0;
16     for(f=0,m=0;f<6;f++)
17         if(dd[f])
18         {    
19             cc[m]=f+1;
20             m++;
21         }
22     dd[0]=cc[0]*100+cc[1]*10+cc[2];
23     dd[1]=cc[0]*100+cc[2]*10+cc[1];
24     dd[2]=cc[1]*100+cc[2]*10+cc[0];
25     dd[3]=cc[1]*100+cc[0]*10+cc[2];
26     dd[4]=cc[2]*100+cc[1]*10+cc[0];
27     dd[5]=cc[2]*100+cc[0]*10+cc[1];
28 }
29 void sx()
30 {
31     int g,j,k;
32     for(g=0;g<2;g++)
33         for(j=0;j<6;j++)
34             if (ss[g]*(i+1)==dd[j])
35                 printf("%d * %d = %d\n",ss[g],i+1,dd[j]);
36 }
37 int main()
38 {
39     int j,k,l,n,m;
40     int a[6];
41     for (i=0;i<=5;i++)
42         a[i]=1;
43     
44 
45 
46 
47     for(i=0;i<6;i++)
48     {
49         a[i]=0;
50         for(k=0;k<5;k++)
51             if (a[k])
52             {
53                 a[k]=0;
54                 for(l=k+1;l<6;l++)
55                 {    if (a[l])
56                     {    
57                         a[l]=0;
58                         px(k+1,l+1);
59                         zx(i+1,k+1,l+1);
60                         sx();
61                         a[l]=1;
62                     }
63                 }
64                 a[k]=1;
65             }
66         a[i]=1;
67     }
68     return 0;
69 }
70 
71 xuxiang@xuxiang-X556UQ:~/桌面$ ./5
72 54 * 3 = 162
73 xuxiang@xuxiang-X556UQ:~/桌面$ 

 

「糟糕」再写这么乱且无用的代码,罚自己不吃午饭