当前位置: 代码迷 >> C语言 >> 请指点这个题目的算法,不胜感激
  详细解决方案

请指点这个题目的算法,不胜感激

热度:460   发布时间:2006-02-16 16:26:00.0
请指点这个题目的算法,不胜感激
有2行3列的矩形框,输入6个数字1~6,要求左边的数字比右边的大,上边的数字比下边的大,求出所有可能的填写方法。
搜索更多相关的解决方案: 算法  感激  数字  

----------------解决方案--------------------------------------------------------
怎么没人指点我呢,自己先顶一下
----------------解决方案--------------------------------------------------------
题目能不能说得更清楚一点
----------------解决方案--------------------------------------------------------
题目就是这样写的。我的理解是一个2*3的数组,其中元素的排列要求是左边的数字比右边的大,上边的数字比下边的大,这样的排列应该不只一种,请将所有的满足以上要求的排列都输出来。
我想的头都大了,一点思路都没有

----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
int a[6], b, c, d, e, f, g, i;
for(b=1; b<7; b++)
{
a[0]=b;
for(c=1; c<7; c++)
{
if(c==b) continue;
a[1]=c;
for(d=1; d<7; d++)
{
if(d==c || d==b) continue;
a[2]=d;
for(e=1; e<7; e++)
{
if(e==d || e==c || e==b) continue;
a[3]=e;
for(f=1; f<7; f++)
{
if(f==e || f==d || f==c || f==b) continue;
a[4]=f;
for(g=1; g<7; g++)
{
if(g==f || g==e || g==d || g==c || g==b) continue;
a[5]=g;
if((a[0]>a[1] && a[0]>a[3]) && (a[1]>a[2] && a[1]>a[4]) && a[2]>a[5])
{
for(i=0; i<6; i++)
{
printf("%2d", a[i]);
if(!((i+1)%3)) printf("\n");
}
printf("\n");
}
}
}
}
}
}
}
getch();
return 0;
}

[此贴子已经被作者于2006-2-16 18:32:57编辑过]


----------------解决方案--------------------------------------------------------

感激涕淋,可是最后的getch();是什么意思啊,
倒数第2个if语句应该再加上&&a[3]>a[4]&&a[4]>a[5],呵呵


----------------解决方案--------------------------------------------------------
是哦 呵呵 忘记了。。
getch()是从键盘读取一个字符

函数名: getch
功 能: 从控制台无回显地取一个字符
用 法: int getch(void);
程序例:

#include <stdio.h>
#include <conio.h>

int main(void)
{
char ch;

printf("Input a character:");
ch = getche();
printf("\nYou input a '%c'\n", ch);
return 0;
}


----------------解决方案--------------------------------------------------------

多谢啦
----------------解决方案--------------------------------------------------------
真不明白5楼为什么不使用二维数组
----------------解决方案--------------------------------------------------------
以下是引用chenfeiam在2006-2-16 17:45:00的发言:
题目就是这样写的。我的理解是一个2*3的数组,其中元素的排列要求是左边的数字比右边的大,上边的数字比下边的大,这样的排列应该不只一种,请将所有的满足以上要求的排列都输出来。
我想的头都大了,一点思路都没有

此种排序就一种方法吧!还有其他的吗?


----------------解决方案--------------------------------------------------------
  相关解决方案