把1-8填入图中的网格中,使得每条线所连接的2个数字不相邻
2016-11-08 09:54
387 查看
把1-8填入图中的网格中,使得每条线所连接的2个数字不相邻
![](https://img-blog.csdn.net/20161108095242131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码如下:
答案:
5 3
2 8 1 7
6 4
6 4
2 8 1 7
5 3
3 5
7 1 8 2
4 6
4 6
7 1 8 2
3 5
代码如下:
#include <iostream> using namespace std; int isadjoin(int x, int a, int b, int c, int d, int e, int f) { if((x != a && x != a-1 && x != a+1) && (x != b && x != b-1 && x != b+1) && (x != c && x != c-1 && x != c+1) && (x != d && x != d-1 && x != d+1) && (x != e && x != e-1 && x != e+1) && (x != f && x != f-1 && x != f+1)) return 0; else return -1; } int isequal(int x, int a, int b, int c, int d) { if((x != a) && (x != b) && (x != c) && (x != d)) return 0; else return -1; } int main() { int a,b,c,d,e,f,g,x; for(x = 1; x <= 8; x++) { for(a = 1; a <= 8; a++) { if(isadjoin(a, x, x, x, x, x, x) == 0 && isequal(a, x, x, x, x) == 0) for(b = 1; b <= 8; b++) { if(isadjoin(b, a, a, a, a, a, a) == 0 && isequal(b, x, x, x, x) == 0) for(c = 1; c <= 8; c++) { if(isadjoin(c, x, a, b, b, b, b) == 0 && isequal(c, a, a, a, a) == 0) for(d = 1; d <= 8; d++) { if(isadjoin(d, a, b, c, c, c, c) == 0 && isequal(d, x, x, x, x) == 0) for(e = 1; e <= 8; e++) { if(isadjoin(e, b, d, d, d, d, d) == 0 && isequal(e, x, a, c, c) == 0) for(f = 1; f <= 8; f++) { if(isadjoin(f, x, c, d, d, d, d) == 0 && isequal(f, a, b, e, e) == 0) for(g = 1; g <= 8; g++) { if(isadjoin(g, c, d, e, f, f, f) == 0 && isequal(g, x, a, b, b) == 0) cout<<a<<" "<<b<<" \n"<<x<<" "<<c<<" "<<d<<" "<<e<<" \n"<<f<<" "<<g<<"\n\n\n\n"<<endl; } } } } } } } } return 0; }
答案:
5 3
2 8 1 7
6 4
6 4
2 8 1 7
5 3
3 5
7 1 8 2
4 6
4 6
7 1 8 2
3 5
相关文章推荐
- 给一个奇数阶N幻方,填入数字1,2,3…N*N,使得横竖斜方向上的和都相同
- 给定2个数字,n,m,使得从1到n之间的数字组合,他们的和等于m,求所有组合
- 在N*N的棋盘上(1<=N<=10)请填入1,2,...N2共N2个数,使得任意两个相邻的数之和为素数。
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
- 给定2个数字,并将这两个数范围内的所有数输出,并使得每行输出不超过10个数
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。
- 将[1,n^2]区间内n^2个数字分别填充到n*n的矩阵里,要求任意两个相邻的数字的和,它们的最大值最小是多少?
- uva10905连接n个数字,使得连成的数字最大
- 一个3*3的格子,给定n>=10, 将[1,n]中的数填入方格中,使得相邻方格的数的和为质数
- 将1、2、...、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。
- 巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
- 输入一个递增排序的数组和一个数字s,在数组中寻找两个数,使得这两个数的和为s
- awk 字符串连接操作(字符串转数字,数字转字符串)
- 输入的2个数字进行反转
- 在一串数字中插入r个乘号,使得乘积最大
- iOS UITextField 限制输入长度,中英文混排,汉字占2个长度,英文数字占1个长度
- c编程:输入一个数字n,则n代表n行,每行输入2个数字a,b计算每行的a+b问题。
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字 时间复杂度O(NlogN)
- 【codeforce Gym 100570B】【最短路SPFA】 ShortestPath Query 【询问单源最短路径,每条边有一个颜色,要求路径上相邻边的颜色不能相同】
- 41 - 找出数组中和为sum的 2个数字 | 找出和为sum的连续正整数序列