论坛: 编程破解 标题: 这个数组怎样排? 复制本贴地址    
作者: sniper167 [sniper167]    论坛用户   登录
用1,2,3,4,5,6,7,8,9共9个数字组成一个3行3列的数组,使其横着三个、竖着三个或是斜着三个数用 +、―、*、/ 运算后结果都为24。

哪个强人能用C语言编程实现?


[此贴被 啥都不会(sniper167) 在 04月01日17时08分 编辑过]

地主 发表时间: 04-04-01 16:54

回复: cdeee [cdeee]   论坛用户   登录
这不可能吧,三个小于10的数字相减后可能等于24?

B1层 发表时间: 04-04-01 16:57

回复: sniper167 [sniper167]   论坛用户   登录
还有加、减、乘、除呢?

B2层 发表时间: 04-04-01 17:09

回复: cdeee [cdeee]   论坛用户   登录
    什么加、减、乘、除?说清楚点。
    如果真的存在这种可能,可以使用贪婪法,虽然效率差,但实现简单。

B3层 发表时间: 04-04-01 17:15

回复: sniper167 [sniper167]   论坛用户   登录
意思是说在这三个数之间只能用加、减、乘、除四种运算

B4层 发表时间: 04-04-01 17:20

回复: kailangq [kailangq]   版主   登录


B5层 发表时间: 04-04-02 04:17

回复: yuanrulai [yuanrulai]   论坛用户   登录
就像王小丫的那个节目里央的那个嘛
我本来也想编一个的
但是我不知道怎么编


B6层 发表时间: 04-04-02 12:26

回复: cdeee [cdeee]   论坛用户   登录

  // 全局变量
  int List[3][3];

  // 函数内部实现
  int i,j,k,l,m,n,o,p,q;
  for(i=1; i<=9; i++)
  {
    for(j=1; j<=9 && j!=i ; j++)
    {
      for(k=1; k<=9 && k!=i && k!=j ; k++)
      {
        for(l=1; l<=9 && l!=i && l!= j && l!= k; l++)
        {
          for(m=1; m<=9 && m!=i && m!= j && m!= k && m!= l; m++)
          {
            for(n=1; n<=9 && n!=i && n!= j && n!= k && n!= l && n!= m; n++)
            {
              for(o=1; o<=9 && o!=i && o!= j && o!= k && o!= l && o!= m && o!= n; o++)
              {
                for(p=1; p<=9 && p!=i && p!= j && p!= k && p!= l && p!= m && p!= n && p!= o; p++)
                {
                  for(q=1; q<=9 && q!=i && q!= j && q!= k && q!= l && q!= m && q!= n && q!= o && q!= p; q++)
                  {
                    List[0] = i;
                    List[1] = j;
                    List[2] = k;
                    List[3] = l;
                    List[4] = m;
                    List[5] = n;
                    List[6] = o;
                    List[7] = p;
                    List[8] = q;
                    if(满足条件)
                      退出;
                  }
                }
              }
            }
          }
        }
      }
    }
  }

B7层 发表时间: 04-04-02 13:47

回复: cdeee [cdeee]   论坛用户   登录
上面是使用循环实现的,也可以改用递归函数实现。

B8层 发表时间: 04-04-02 13:49

回复: chiru [chiru]   论坛用户   登录
都没有看明白题的意思

B9层 发表时间: 04-04-02 14:53

回复: sniper167 [sniper167]   论坛用户   登录
cdeee [cdeee]  :

那个满足条件怎样表示?现在连用+、-、*、/、还是括号都不确定

B10层 发表时间: 04-04-03 12:56

回复: cdeee [cdeee]   论坛用户   登录
    这里说的条件就是你说的运算及结果(如果为24则满足),因为没看懂你说的运算方法,所以只好空出来让你自己填。
    晕,刚看了上面的程序,才发现在填充数组的时候把定义的二维数组当一维数组用了,你用的时候注意改一下。
   

[此贴被 cdeee(cdeee) 在 04月03日13时06分 编辑过]

B11层 发表时间: 04-04-03 13:03

回复: sniper167 [sniper167]   论坛用户   登录
我就是那里不会用C来表示

使其横着三个、竖着三个或是斜着三个数用 +、―、*、/ 、()运算后结果都为24。

[此贴被 啥都不会(sniper167) 在 04月03日13时06分 编辑过]

B12层 发表时间: 04-04-03 13:05

回复: cdeee [cdeee]   论坛用户   登录
哈哈,看来你自己也没读懂题的意思,有趣啊!

B13层 发表时间: 04-04-03 13:07

回复: sniper167 [sniper167]   论坛用户   登录
晕死
看来我要重学汉语了
表达能力太差
咋这么多人没看懂我的意思

B14层 发表时间: 04-04-03 13:16

回复: sniper167 [sniper167]   论坛用户   登录
用1,2,3,4,5,6,7,8,9共9个数字组成一个3行3列的数组,使其横着三个、竖着三个或是斜着三个数选用用 +、―、*、/ 、()运算后的结果都为24。

+、―、*、/ 、()的使用次数没有限制

用C语言编程实现?



9个红圈代表9个数字,其他8条颜色的直线上各有3个数字,就是用+、―、*、/ 、()来组合这三个数字,使其结果都等于24。

不知明白没有?





[此贴被 啥都不会(sniper167) 在 04月03日13时33分 编辑过]

B15层 发表时间: 04-04-03 13:22

回复: cdeee [cdeee]   论坛用户   登录
    我说过了,任意线条上3个数字相减都不可能大于9,这个题本身就有问题,建议你不要再想了。

B16层 发表时间: 04-04-03 14:20

回复: sniper167 [sniper167]   论坛用户   登录

不是还有+、*、/、()吗?

B17层 发表时间: 04-04-03 14:33

回复: lida1818 [lida1818]   论坛用户   登录
139
527
648

147
539
628

156
324
978

156
432
798

156
978
324

193
572
684

234
516
798

243
561
789

243
879
615

257
319
468

257
468
319

286
471
395

319
468
257

324
978
156

342
165
987

342
978
516

391
275
486

395
471
286

423
879
651

432
615
897

468
319
257

486
275
391

516
978
342

593
174
682

615
879
243

628
539
147

648
527
139

651
234
897

651
423
879

651
879
423

682
174
593

684
572
193

741
935
826

752
864
913

752
913
864

789
561
243

798
432
156

798
516
234

826
935
741

846
725
931

864
913
752

879
423
651

897
234
651

897
615
432

913
864
752

931
725
846

978
324
156

987
165
342



B18层 发表时间: 04-04-03 21:15

回复: sniper167 [sniper167]   论坛用户   登录
老大
咋来的?

迫切想知道。。。

B19层 发表时间: 04-04-03 21:24

回复: ysfilone [ysfilone]   论坛用户   登录
是用的cdeee[cdee]么?

不过他好像满足条件的那部分代码没有给出哦

就是用3个数字和 +,-,*,/,()结合算出24的代码没有给出来啊

这部分代码如何实现?


B20层 发表时间: 04-04-03 21:46

回复: lida1818 [lida1818]   论坛用户   登录
我是用穷举法算的,感觉不好,算法太复杂。

还有两个想法,但是写不出程序。


想不出来,把想法贴上,请大家看看能不能实现

是否可这样解:

  a[0][0]    a[0][1]  a[0][2]

  a[1][0]    a[1][1]  a[1][2]

  a[2][0]    a[2][1]  a[2][2]

数组a可能的组排列:
  1。 如果是用穷举法,则9*8*7*6*5*4*3*2*1=362880 种,但是实际我们只需求出 362880 /4 种即可。因为如:
 

      1 2 3
      4 5 6
      7 8 9    假定这个数组满足条件,那么


      3 6 9    9 8 7    7 4 1
      2 5 8    6 5 4    8 5 2
      1 4 7    3 2 1    9 6 3  (顺时针或者逆时针的关系)


也同样是满足条件的,即如上四种实际只需求出一种排列,所以只需穷举90720次即可。
具体实现:
1。定一中心 a[1][1]  这里有9种取法。例如:取 5 时
2。据以上分析,周边8个数 可以看成是个圆周,只要其相对位置不变,可以认为是同一组。例如:
          如果周边取 12369874满足条件    那么23698741  36987412..... 就不用再取了
这样, 只需穷举90720次即可。是原先的1/4次。
关键的第二步我写不出来,不知能否实现.



[此贴被 烟雨平生(lida1818) 在 04月03日23时08分 编辑过]

B21层 发表时间: 04-04-03 22:25

回复: axpwx [axpwx]   论坛用户   登录
不会!

B22层 发表时间: 04-04-04 03:53

回复: vloadpe [vloadpe]   论坛用户   登录
俺也来凑热闹,哈,
#include "stdio.h"
#include "conio.h"

main()
{
int i,j,k;
    for(i=1;i<=9;i++)
        for(j=i+1;j<=9;j++)
          for(k=j+1;k<=9;k++)
          if(
              i+j+k==24||
              i*j-k==24||i*k-j==24||k*j-i==24||
              i*j+k==24||i*k+j==24||k*j+i==24||
              i*j*k==24||
              (i+j)*k==24||(i+k)*j==24||(k+j)*i==24||
              (j-i)*k==24||(k-i)*j==24||(k-j)*i==24||
              (i*k/j==24&&i*k%j==0)||(j*k/i==24&&j*k%i==0)
            )
            printf("%d,%d,%d  ",i,j,k);
getch();
}
结果如下:
1,2,8  1,3,6  1,3,7  1,3,8  1,3,9  1,4,5  1,4,6  1,4,7  1,4,8  1,5,6  2,3,4  2,3,6  2,3,9  2,4,8  2,5,7  2,5,8  2,6,8  2,6,9 
3,4,9  3,5,9  3,6,7  3,6,8  3,8,9
4,6,8  4,7,8 
5,6,9 
6,8,9 
7,8,9
再不会了,思路是在上面中选三个,再看竖,斜是否可行,


[此贴被 vloadpe(vloadpe) 在 04月04日06时04分 编辑过]

B23层 发表时间: 04-04-04 05:39

回复: lida1818 [lida1818]   论坛用户   登录
俺也来凑热闹,哈,
#include "stdio.h"
#include "conio.h"

main()
{
int i,j,k;
    for(i=1;i<=9;i++)
        for(j=i+1;j<=9;j++)  <----  j=1;j<=9&&j!=i
          for(k=j+1;k<=9;k++)<----  k=1;k<=9&&k!=i&&k!=j
          if(
              i+j+k==24||
              i*j-k==24||i*k-j==24||k*j-i==24||
              i*j+k==24||i*k+j==24||k*j+i==24||
              i*j*k==24||
              (i+j)*k==24||(i+k)*j==24||(k+j)*i==24||
              (j-i)*k==24||(k-i)*j==24||(k-j)*i==24||
              (i*k/j==24&&i*k%j==0)||(j*k/i==24&&j*k%i==0)
            )这部分写成函数好

            printf("%d,%d,%d  ",i,j,k);
getch();
}
结果如下:
1,2,8  1,3,6  1,3,7  1,3,8  1,3,9  1,4,5  1,4,6  1,4,7  1,4,8  1,5,6  2,3,4  2,3,6  2,3,9  2,4,8  2,5,7  2,5,8  2,6,8  2,6,9 
3,4,9  3,5,9  3,6,7  3,6,8  3,8,9
4,6,8  4,7,8 
5,6,9 
6,8,9 
7,8,9
再不会了,思路是在上面中选三个,再看竖,斜是否可行





[此贴被 烟雨平生(lida1818) 在 04月04日09时32分 编辑过]

B24层 发表时间: 04-04-04 09:31

回复: sniper167 [sniper167]   论坛用户   登录
#include<iostream.h>
#include<stdlib.h>
#include<time.h>

int Array[3][3]={0};

void Sort()
{
srand(time(0));
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
Array[i][j]=1+rand()%9;
}
}
void Print()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(j==2)
cout<<"Array["<<i<<"]["<<j<<"]="<<Array[i][j]<<"  "<<endl;
else
cout<<"Array["<<i<<"]["<<j<<"]="<<Array[i][j]<<"  ";
}

bool pan(int a,int b,int c)
{
if(a+b+c==24&&a-b-c==24&&a*b*c==24&&a/b/c==24)
return true;
return false;
}

void main()
{
for(int i=1;i<=1000000000;i++)
{
Sort();
if(pan(Array[0][0],Array[0][1],Array[0][2])&&pan(Array[1][0],Array[1][1],Array[1][2])&&pan(Array[2][0],Array[2][1],Array[2][2])&&pan(Array[0][0],Array[1][0],Array[2][0])&&pan(Array[0][1],Array[1][1],Array[2][1])&&pan(Array[0][2],Array[1][2],Array[2][2])&&pan(Array[0][0],Array[1][1],Array[2][2])&&pan(Array[0][2],Array[1][1],Array[2][0]))
{
Print();
cout<<"\n\n\n\n"<<endl;
}
}
cout<<"找不到这样的数组"<<endl;
}



B25层 发表时间: 04-04-04 11:09

回复: sniper167 [sniper167]   论坛用户   登录
i,j,k,l,m,n,o,p,q 代表数组的9个数,x,y代表 +、-、*、/ 四个运算符号
用宏定义分别定义 a 为  +

                b 为  -

                c 为  *

                d 为  /
四种运算符号

不知道在c中能不能这样?


#define  a  +

#define  b  -

#define  c  *

#define  d  /

main()
{
int i,j,k,l,m,n,o,p,q,x,y;
    for(i=1; i<=9; i++)

        for(j=1; j<=9 && j!=i ; j++)

            for(k=1; k<=9 && k!=i && k!=j ; k++)

                for(l=1; l<=9 && l!=i && l!= j && l!= k; l++)

                    for(m=1; m<=9 && m!=i && m!= j && m!= k && m!= l; m++)

                        for(n=1; n<=9 && n!=i && n!= j && n!= k && n!= l && n!= m; n++)

                            for(o=1; o<=9 && o!=i && o!= j && o!= k && o!= l && o!= m && o!= n; o++)

                                for(p=1; p<=9 && p!=i && p!= j && p!= k && p!= l && p!= m && p!= n && p!= o; p++)

                                    for(q=1; q<=9 && q!=i && q!= j && q!= k && q!= l && q!= m && q!= n && q!= o && q!= p; q++)

                                        for(x=a; a<=d; x++)        错误:  表达式语法错在 main 函数中    警告: 可能在'x'定义以前使用了它在 main 函数中    错误: 语句缺少';'在 main 函数中

                                            for(y=a; y<=d; y++)          错误:  表达式语法错在 main 函数中    警告: 可能在'y'定义以前使用了它在 main 函数中    错误: 语句缺少';'在 main 函数中

                                              {if(ixjyk==lxmyn==oxpyq==ixcyo==jxmyp==kxnyq==ixmyq==kxmyo==24)

                                                  printf("%3d%3d%3d\n%3d%3d%3d\n%3d%3d%3d\n",i,j,k,l,m,n,o,p,q);

                                                else exit();

                                              }

}


B26层 发表时间: 04-04-04 12:04

回复: lida1818 [lida1818]   论坛用户   登录
TO: 啥都不会

如何做四则运算,有个叫逆波兰式的算法,你可找来看看。但是就这题而言,我觉得不必要,因为:

如果穷举三个数用+,-,*,/,()可得
==========================================
main()
{
  int x1,x2;

  for(x1='*';x1<='/';x1++)
  if (x1==','||x1=='.')continue;
  else for(x2='*';x2<='/';x2++)
          if (x2==','||x2=='.')continue;
  else printf("A%cB%cC=  (A%cB)%cC=  A%c(B%cC)=\n",x1,x2,x1,x2,x1,x2);
getch();
}
==============================================================
A*B*C=  (A*B)*C=  A*(B*C)=
A*B+C=  (A*B)+C=  A*(B+C)=
A*B-C=  (A*B)-C=  A*(B-C)=
A*B/C=  (A*B)/C=  A*(B/C)=
A+B*C=  (A+B)*C=  A+(B*C)=
A+B+C=  (A+B)+C=  A+(B+C)=
A+B-C=  (A+B)-C=  A+(B-C)=
A+B/C=  (A+B)/C=  A+(B/C)=
A-B*C=  (A-B)*C=  A-(B*C)=
A-B+C=  (A-B)+C=  A-(B+C)=
A-B-C=  (A-B)-C=  A-(B-C)=
A-B/C=  (A-B)/C=  A-(B/C)=
A/B*C=  (A/B)*C=  A/(B*C)=
A/B+C=  (A/B)+C=  A/(B+C)=
A/B-C=  (A/B)-C=  A/(B-C)=
A/B/C=  (A/B)/C=  A/(B/C)=


但是实际上我们只要其中的一小部分:
A*B*C=      A+B*C=      A*B+C=    A/B*C=   
  (A-B)*C=    A*(B+C)=    A*(B-C)=  A/(B/C)=
  A+B+C=      A*B/C=      A*B-C=    (A+B)*C=                     

其它的都不合题意,所以只需用上面的写个函数:
int  fun(double a,double b,double c)
{  int tt;
  if (a/b*c==24)tt=1;
  else if (a+b*c==24)tt=1;
  。。。
  。。。。 
  。。。。。。。。。。
  else if (a+b+c==24)tt=1;
  else  tt=0;

  return (tt);
  }

但是还需要解决一个问题,
如:6,1,4 函数fun()能判断, 但是 如果给出的是 1,6,4 函数fun()就无能为力了。所以,还得另写一个交换 a,b,c,的顺序的zh_fun().


[此贴被 烟雨平生(lida1818) 在 04月04日14时21分 编辑过]

B27层 发表时间: 04-04-04 14:12

回复: jiaoyulao [jiaoyulao]   论坛用户   登录
好像是数学问题吧?

B28层 发表时间: 04-04-04 18:53

回复: sniper167 [sniper167]   论坛用户   登录
一网友写的:

运行比较慢,希望大家帮忙改改,提高提高效率
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#include<stdio.h>

#define ADD  1
#define SUB  2
#define PLUS 3
#define DIV  4

//int op[4]={ADD,SUB,PLUS,DIV};
int opnumber(int optype,int num1,int num2){
int result=0;
switch(optype){
case ADD: result=num1+num2;
break;
case SUB: result=num1-num2;
break;
case PLUS: if(num2!=0&&num1!=0)result=num1*num2;else {
  result=10000;
  break;
  }
break;
case DIV: if(num2!=0&&num1!=0)result=num1/num2;else {
  result=10000;
  break;
  }
  if(num1%num2!=0)result=10000;
break;
default:
break;
}
return result;
}
void print(int num1,int num2,int num3,int num4,int optype1,int optype2,int optype3){
char exp1[128],exp2[128],exp3[128];
switch(optype1){
case ADD:sprintf(exp1,"(%d+%d)",num1,num2);
break;
case SUB:sprintf(exp1,"(%d-%d)",num1,num2);
break;
case PLUS:sprintf(exp1,"(%d*%d)",num1,num2);
break;
case DIV:sprintf(exp1,"(%d/%d)",num1,num2);
break;
}
switch(optype2){
case ADD:sprintf(exp2,"(%s+%d)",exp1,num3);
break;
case SUB:sprintf(exp2,"(%s-%d)",exp1,num3);
break;
case PLUS:sprintf(exp2,"(%s*%d)",exp1,num3);
break;
case DIV:sprintf(exp2,"(%s/%d)",exp1,num3);
break;
}
switch(optype3){
case ADD:sprintf(exp3,"%s+%d=24",exp2,num4);
break;
case SUB:sprintf(exp3,"%s-%d=24",exp2,num4);
break;
case PLUS:sprintf(exp3,"%s*%d=24",exp2,num4);
break;
case DIV:sprintf(exp3,"%s/%d=24",exp2,num4);
break;
}
printf("%s\n",exp3);
}
bool check(int num1,int num2,int num3,int num4){
int result=0;
bool flag=false;
int i,j,k;
for(i=1;i<=4;i++){
for(j=1;j<=4;j++){
for(k=1;k<=4;k++){
result=opnumber(i,num1,num2);
result=opnumber(j,result,num3);
result=opnumber(k,result,num4);
if(result==24){
flag=true;
//print(num1,num2,num3,num4,i,j,k);
return flag;
}
}
}
}
return flag;
}

bool allcheck(int num1,int num2,int num3,int num4){
bool flag=false;
int opnum[4]={num1,num2,num3,num4};
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
for(int k=0;k<4;k++){
for(int z=0;z<4;z++){
if(!(i==j||i==k||i==z||j==k||j==z||k==z)){
flag=check(opnum[i],opnum[j],opnum[k],opnum[z]);
if(flag)return flag;
}
}
}
}
}
return flag;
}

void main()
{
/*int a[4];
for(int i=0;i<4;i++){
printf("Input %d number:",i+1);
scanf("%d",&a[i]);
}
allcheck(a[0],a[1],a[2],a[3]);*/
int a[9]={1,2,3,4,5,6,7,8,9};
for(int i1=0;i1<9;i1++){
for(int i2=0;i2<9;i2++){
for(int i3=0;i3<9;i3++){
for(int i4=0;i4<9;i4++){
for(int i5=0;i5<9;i5++){
for(int i6=0;i6<9;i6++){
for(int i7=0;i7<9;i7++){
for(int i8=0;i8<9;i8++){
for(int i9=0;i9<9;i9++){
  if(!(i1==i2||i1==i3||i1==i4||i1==i5||i1==i6||i1==i7||i1==i8||i1==i9||
  i2==i3||i2==i4||i2==i5||i2==i6||i2==i7||i2==i8||i2==i9||
  i3==i4||i3==i5||i3==i6||i3==i7||i3==i8||i3==i9||
  i4==i5||i4==i6||i4==i7||i4==i8||i4==i9||
  i5==i6||i5==i7||i5==i8||i5==i9||
  i6==i7||i6==i8||i6==i9||
  i7==i8||i7==i9||
  i8==i9)){
  if( allcheck(a[i1],a[i2],a[i3],0)&&
  allcheck(a[i4],a[i5],a[i6],0)&&
  allcheck(a[i7],a[i8],a[i9],0)&&
  allcheck(a[i1],a[i4],a[i7],0)&&
  allcheck(a[i2],a[i5],a[i8],0)&&
  allcheck(a[i3],a[i6],a[i9],0)&&
  allcheck(a[i1],a[i5],a[i9],0)&&
  allcheck(a[i3],a[i5],a[i7],0)){
printf("%d %d %d\n",a[i1],a[i2],a[i3]);
printf("%d %d %d\n",a[i4],a[i5],a[i6]);
printf("%d %d %d\n",a[i7],a[i8],a[i9]);
printf("****************************\n");
//return;
  }
  }
}
}
}
}
}
}
}
}
}

}



B29层 发表时间: 04-04-05 22:15

回复: cyshaoping [cyshaoping]   论坛用户   登录
用的写这么多不?


B30层 发表时间: 04-04-07 21:44

回复: sniper167 [sniper167]   论坛用户   登录
那你有更好的没?

望赐教!!!

B31层 发表时间: 04-04-08 11:50

回复: vloadpe [vloadpe]   论坛用户   登录
#include "stdio.h"
#include "conio.h"
int fun(int x,int y,int z)
{int i,j,k,tt;
    if(x<y&&y<z){i=x;j=y;k=z;}
    else if(x<z&&z<y){i=x;j=z;k=y;}
    else if(y<x&&x<z){i=y;j=x;k=z;}
    else if(y<z&&z<x){i=y;j=z;k=x;}
    else if(z<x&&x<y){i=z;j=x;k=y;}
    else if(z<y&&y<x){i=z;j=y;k=x;}
    if(i+j+k==24||
    i*j-k==24||i*k-j==24||k*j-i==24||
    i*j+k==24||i*k+j==24||k*j+i==24||i*j*k==24||
    (i+j)*k==24||(i+k)*j==24||(k+j)*i==24||
    (j-i)*k==24||(k-i)*j==24||(k-j)*i==24||
    (i*k/j==24&&i*k%j==0)||(j*k/i==24&&j*k%i==0))
    tt=1;  else tt=0;  return tt;}
main()
{int i,j,k,m,n,p,x,y,z;
    for(i=1;i<=9;i++)
      for(j=1;j<=9;j++)
        if(i!=j)
        for(k=1;k<=9;k++)
          if(k!=i&&k!=j&&fun(i,j,k)==1)
          for(m=1;m<=9;m++)
            if(m!=i&&m!=j&&m!=k)
            for(n=1;n<=9;n++)
              if(n!=i&&n!=j&&n!=k&&n!=m)
              for(p=1;p<=9;p++)
                if(p!=i&&p!=j&&p!=k&&p!=m&&p!=n&&fun(m,n,p)==1)
                for(x=1;x<=9;x++)
                  if(x!=i&&x!=j&&x!=k&&x!=m&&x!=n&&x!=p&&fun(i,m,x)==1&&fun(k,n,x)==1)
                  for(y=1;y<=9;y++)
                    if(y!=i&&y!=j&&y!=k&&y!=m&&y!=n&&y!=p&&y!=x&&fun(j,n,y)==1)
                    for(z=1;z<=9;z++)
                      if(z!=i&&z!=j&&z!=k&&z!=m&&z!=n&&z!=p&&z!=x&&z!=y&&
                      fun(x,y,z)==1&&fun(k,p,z)==1&&fun(i,n,z)==1)
    printf("%d,%d,%d,%d,%d,%d,%d,%d,%d  ",i,j,k,m,n,p,x,y,z);
getch();
}

1,3,9,5,2,7,6,4,8  1,4,7,5,3,9,6,2,8  1,5,6,3,2,4,9,7,8  1,5,6,4,3,2,7,9,8
1,5,6,9,7,8,3,2,4  1,9,3,5,7,2,6,8,4  2,3,4,5,1,6,7,9,8  2,4,3,5,6,1,7,8,9
2,4,3,8,7,9,6,1,5  2,5,7,3,1,9,4,6,8  2,5,7,4,6,8,3,1,9  2,8,6,4,7,1,3,9,5
3,1,9,4,6,8,2,5,7  3,2,4,9,7,8,1,5,6  3,4,2,1,6,5,9,8,7  3,4,2,9,7,8,5,1,6
3,9,1,2,7,5,4,8,6  3,9,5,4,7,1,2,8,6  4,2,3,8,7,9,6,5,1  4,3,2,6,1,5,8,9,7
4,6,8,3,1,9,2,5,7  4,8,6,2,7,5,3,9,1  5,1,6,9,7,8,3,4,2  5,9,3,1,7,4,6,8,2
6,1,5,8,7,9,2,4,3  6,2,8,5,3,9,1,4,7  6,4,8,5,2,7,1,3,9  6,5,1,2,3,4,8,9,7
6,5,1,4,2,3,8,7,9  6,5,1,8,7,9,4,2,3  6,8,2,1,7,4,5,9,3  6,8,4,5,7,2,1,9,3
7,4,1,9,3,5,8,2,6  7,5,2,8,6,4,9,1,3  7,5,2,9,1,3,8,6,4  7,8,9,5,6,1,2,4,3
7,9,8,4,3,2,1,5,6  7,9,8,5,1,6,2,3,4  8,2,6,9,3,5,7,4,1  8,4,6,7,2,5,9,3,1
8,6,4,9,1,3,7,5,2  8,7,9,4,2,3,6,5,1  8,9,7,2,3,4,6,5,1  8,9,7,6,1,5,4,3,2
9,1,3,8,6,4,7,5,2  9,3,1,7,2,5,8,4,6  9,7,8,3,2,4,1,5,6  9,8,7,1,6,5,3,4,2


B32层 发表时间: 04-04-08 15:51

回复: lwei889 [lwei889]   论坛用户   登录
不是吧,这么复杂!!!

B33层 发表时间: 04-04-09 19:21

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号