Backward Digit Sums
Description FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N <= 10) in a certain order and then sum adjacent numbers to produce a new list with one fewer number. They repeat this until only a single number is left. For example, one instance of the game (when N=4) might go like this: 3 1 2 4
4 3 6
7 9
16 Behind 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 Line 1: Two space-separated integers: N and the final sum.Output Line 1: An ordering of the integers 1..N that leads to the given sum. If there are multiple solutions, choose the one that is lexicographically least, i.e., that puts smaller numbers first.Sample Input 4 16 Sample Output 3 1 2 4 Hint Explanation of the sample:There are other possible sequences, such as 3 2 1 4, but 3 1 2 4 is the lexicographically smallest. Source USACO 2006 February Gold & Silver |
这个题意就是给你一个n和m,然后n个数排列后像上面的那样计算出一个数,如果和m想同就ok,输出最小的序列
思路:
直接dfs枚举每个序列,如果有满足结束,不过我代码中有个传地址的地方让我bug了几分钟,细节在代码中
#include#include #include #include using namespace std; #define N 20 int a[N],ans[N]; int vis[N]; int n,m; int yes; int fdd(int a[],int n) { if(n==1) return a[0]; int i; for(i=0;i