POJ3187 Backward Digit Sums 全排列经典题目
来源:互联网 发布:C语言value是什么函数 编辑:程序博客网 时间:2024/06/05 06:27
Backward Digit Sums
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u
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:
Write a program to help FJ play the game and keep up with the cows.
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
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.
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个数,而且每个数还不能相等。
输出满足条件的最小的排列,考察next_permutation的用法
#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>using namespace std;int a[111][11];int s[111];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i = 1;i <= n;i ++) s[i] = i; do { memset(a,0,sizeof(a)); for(int i = 1;i <= n;i ++) a[n][i] = s[i]; int t = n; for(int i = t - 1;i >= 1;i --) { for(int j = 1;j <= i;j ++) a[i][j] = a[i+1][j] + a[i+1][j+1]; } if(a[1][1] == m) { for(int i = 1;i < n;i ++) printf("%d ",s[i]); printf("%d\n",s[n]); break; } ///注意s[i]是从第一个位置开始输出的,所以要对应到next_permutation(s+1,s + n+1) }while(next_permutation(s+1,s + n+1)); } return 0;}
0 0
- POJ3187 Backward Digit Sums 全排列经典题目
- POJ3187 Backward Digit Sums【全排列+暴力】
- POJ3187 Backward Digit Sums
- POJ3187---Backward Digit Sums
- poj3187 Backward Digit Sums
- POJ3187-Backward Digit Sums
- Backward Digit Sums POJ3187
- POJ3187 Backward Digit Sums
- poj3187 Backward Digit Sums
- POJ3187 Backward Digit Sums 枚举
- POJ3187 Backward Digit Sums 【暴搜】
- poj3187 Backward Digit Sums(枚举)
- poj 3187 Backward Digit Sums (全排列)
- Backward Digit Sums --- DFS+全排列
- poj 3178 Backward Digit Sums (全排列)
- Backward Digit Sums (全排列 + 暴力)
- Backward Digit Sums(全排列next_permutation)
- poj3187 Backward Digit Sums---dfs暴力枚举
- ZOJ 3702 Gibonacci number【思维】
- python源码解析笔记--List
- 30条Android开发建议
- 【史上最强】网上所有的Axure元器件、UI、8.0安装包汉化包资源汇总
- python 2.7 中 PIL库安装问题
- POJ3187 Backward Digit Sums 全排列经典题目
- Spark笔记简单实例演示
- JQUERY autocomplete 自动完成
- JAVA I/O系统
- 102. Binary Tree Level Order Traversal (二叉树层次遍历 输出每层)
- 单例设计模式
- hbase集群安装(zookeeper和hbase安装)
- Python入门笔记(17):错误、异常
- C++中的运算符重载-1