如下的10个格子
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案6 (15分)
代码:
#include <iostream> #include <algorithm> #include <cstdlib> #include <cstdio> using namespace std; int dir[10][4] = {1,3,4,5,2,4,5,6,5,6,-1,-1, 4,7,8,-1,5,7,8,9,6,8,9,-1, 9,-1,-1,-1,8,-1,-1,-1,9,-1, -1,-1,-1,-1,-1,-1}; bool check(int *a) { for(int i = 0;i < 10;i ++) { for(int j = 0;j < 4;j ++) { if(dir[i][j] != -1 && abs(a[i] - a[dir[i][j]]) == 1) return false; } } return true; } int main() { int c = 0; int a[10] = {0,1,2,3,4,5,6,7,8,9}; do { if(check(a)) c ++; } while(next_permutation(a,a + 10)); printf("%d",c); }
如果觉得有帮助,点个推荐啦~