生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯之方格填数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
方格填數(shù)
如下的10個格子(圖片在壓縮文件里)
填入0~9的數(shù)字。要求:連續(xù)的兩個數(shù)字不能相鄰。
(左右、上下、對角都算相鄰)
一共有多少種可能的填數(shù)方案?
請?zhí)顚懕硎痉桨笖?shù)目的整數(shù)。
思路:10!不是很大,可以直接枚舉。利用全排列函數(shù)然后判斷是否符合條件就行了。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;int a
[]={0,1,2,3,4,5,6,7,8,9};inline bool check()
{if(abs(a
[0]-a
[1])==1||abs(a
[0]-a
[3])==1||abs(a
[0]-a
[4])==1||abs(a
[0]-a
[5])==1) return 0;if(abs(a
[1]-a
[2])==1||abs(a
[1]-a
[4])==1||abs(a
[1]-a
[5])==1||abs(a
[1]-a
[6])==1) return 0;if(abs(a
[2]-a
[5])==1||abs(a
[2]-a
[6])==1) return 0;if(abs(a
[3]-a
[4])==1||abs(a
[3]-a
[7])==1||abs(a
[3]-a
[8])==1) return 0;if(abs(a
[4]-a
[5])==1||abs(a
[4]-a
[7])==1||abs(a
[4]-a
[8])==1||abs(a
[4]-a
[9])==1) return 0;if(abs(a
[5]-a
[6])==1||abs(a
[5]-a
[8])==1||abs(a
[5]-a
[9])==1) return 0;if(abs(a
[6]-a
[9])==1) return 0;if(abs(a
[7]-a
[8])==1) return 0;if(abs(a
[8]-a
[9])==1) return 0;return 1;
}
int main()
{int ans
=0;do{if(check()) ans
++;}while(next_permutation(a
,a
+10));cout
<<ans
<<endl
;return 0;
}
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的蓝桥杯之方格填数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。