题目描述:
在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