急,一道编程题,请大侠赐教!

来源:百度知道 编辑:UC知道 时间:2024/06/11 09:16:43
有2行3列的矩形框,填入6个数字1-6,要求左边的数字比右边的数字大,上边的数字比下边大,请编写程序求出所有可能的填写方法。

#include <stdio.h>
#include <stdlib.h>
int data[2][3];
int flag[6];
int isok(int d,int x,int y)
{
if(x-1>=0)
{
if(data[x-1][y]<d)
return 0;
}
if(y-1>=0)
{
if(data[x][y-1]<d)
return 0;
}
return 1;
}
void go(int x,int y)
{
int i=0,j=0;
if(x==2)
{
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%2d",data[i][j]);
}
printf("\n");
}
}
else
{
for(i=0;i<6;i++)
{
if(flag[i]==0)
{
if(isok(i+1,x,y))
{
data[x][y]=i+1;
flag[i]=1;
if(y+1<3)
{
go(x,y+1);
}
else
{
go(x+1,0);
}
flag[i]=0;
}
}