如题:http://lol.duowan.com/1501/286125181396.html
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4705 | Accepted: 2703 |
Description
3 1 2 4 4 3 6 7 9 16Behind FJ's back, the cows have started playing a more difficult game, in which they try to determine the starting sequence from only the final total and the number N. Unfortunately, the game is a bit above FJ's mental arithmetic capabilities.
Write a program to help FJ play the game and keep up with the cows.
Input
Output
Sample Input
4 16
Sample Output
3 1 2 4
Hint
There are other possible sequences, such as 3 2 1 4, but 3 1 2 4 is the lexicographically smallest.
题目大意:给出一个N,一个SUM,第一行是1-N的一个排列,下面每一行的数等于上面一行2个数的和,这样第一个结果一定是字典序。
直接搜索就行了,因为要求字典序输出,从小到大枚举排列判断是否满足条件就行了,
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[12];
int main()
{
int n,sum;
int i,j;
scanf("%d%d",&n,&sum);
for(i=1;i<=n;i++)
a[i]=i;
do
{
int b[12];
for(i=1;i<=n;i++)
b[i]=a[i];
int res=0;
for(i=n;i>1;i--)
for(j=1;j<i;j++)
b[j]=b[j]+b[j+1];
if(b[1]==sum)
{
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
break;
}
}while(next_permutation(a+1,a+1+n));
return 0;
}