标题:方格填数
在2行5列的格子中填入1到10的数字。
要求:
相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如【图1.png】所示的2种,就是合格的填法。
请你计算一共有多少种可能的方案。
请提交该整数,不要填写任何多余的内容(例如:说明性文字)。
思路:
爆破,next_permutation
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int a[11] = {1,2,3,4,5,6,7,8,9,10};
int judge(int s[11]){
if(a[1]<a[0])
return 0;
if(a[2]<a[1])
return 0;
if(a[3]<a[2])
return 0;
if(a[4]<a[3])
return 0;
if(a[6]<a[5])
return 0;
if(a[7]<a[6])
return 0;
if(a[8]<a[7])
return 0;
if(a[9]<a[8])
return 0;
if(a[5]<a[0])
return 0;
if(a[6]<a[1])
return 0;
if(a[7]<a[2])
return 0;
if(a[8]<a[3])
return 0;
if(a[9]<a[4])
return 0;
return 1;
}
int main()
{
int n = 0;
do{
if(judge(a)){
n++;
}
}while(next_permutation(a,a+10));
cout<<n<<endl;
return 0;
}