題目描述:
在2行5列的格子中填入1到10的數字。
要求:
相鄰的格子中的數,右邊的大于左邊的,下邊的大于上邊的。
如【圖1.png】所示的2種,就是合格的填法。
請你計算一共有多少種可能的方案。
請送出該整數,不要填寫任何多餘的内容(例如:說明性文字)。
分析:
這題其實比較簡單,隻需要将a[10]={1,2,3,4,5,6,7,8,9,10}全排列,然後每次驗證目前排列是否符合情況
emmm,好多次把algorithm拼錯了,罰寫幾遍QAQ...
#include<iostream>
#include<algorithm>
using namespace std;
int a[10]={1,2,3,4,5,6,7,8,9,10};
int judge();
int sum=0;
int main()
{
do
{
if(judge())
sum++;
}while(next_permutation(a,a+10));
cout<<sum;
}
int judge()
{
if(a[9]<a[8]||a[9]<a[4]) return 0;
if(a[8]<a[7]||a[8]<a[3]) return 0;
if(a[7]<a[6]||a[7]<a[2]) return 0;
if(a[6]<a[5]||a[6]<a[1]) return 0;
if(a[5]<a[0]) return 0;
if(a[4]<a[3]) return 0;
if(a[3]<a[2]) return 0;
if(a[2]<a[1]) return 0;
if(a[1]<a[0]) return 0;
return 1;
}
答案:
42