原文地址:
Description
在一个2行3列的表格中,不重复地填入数字1、2、3、4、5和6。要求左右相邻的数字右边的数字比左边的数字大,上下相邻的数字下边的数字比上边的数字大。这样的表格一共有5种,可以把这5种表格按照字典序排序(排序时可以把表格的第2行移动到第1行的右边连成一个字符串,以字符串排序)。
The Input
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据占一行,其中只包含一个整数i(1≤i≤5)。在行首和行尾没有多余的空格。
The Output
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)依次输出一组对应的答案。每组答案占两行,即问题描述中按照字典序排在第i位的表格。该表格的每行包含三个整数,相邻的两个整数之间以一个空格隔开。在每行的第一个数之前和最后一个数之后不要输出多余的空格。在所有数据前后不要输出多余的空行,两组数据之间也不要输出多余的空行。
Sample Input
13
Sample Output
1 2 34 5 61 2 53 4 6
解题思路
代码
#includeint main() { int list[5][6]; int k=0; for (int a=2; a!=4; ++a) { for (int b=a+1; b!=6; ++b) { for (int c=2; c!=5; ++c) { if (c==a || c==b) { continue; } for (int d=c+1; d!=6; ++d) { if (d==a || d==b) { continue; } int (&ref)[6] = list[k++]; ref[0] = 1; ref[1] = a; ref[2] = b; ref[3] = c; ref[4] = d; ref[5] = 6; } } } } while (scanf("%d",&k)!=EOF) { if (0