POJ 3187 穷举
题意:已知有N个数分别为1-N,如下图为4个数。相邻两两相加直至只剩下一个数,下图的结果就是16。
3 1 2 4
4 3 6
7 9
16
现在反过来看,告诉你数的个数N和最终结果,问这N个数的初始序列是什么。求出字典序最小的初始序列。上图的初始序列也可以是3 2 1 4,但这不是字典序最小。
分析:这题用全排列的方式非常容易做。首先初始化数组为1-N,然后用STL提供的按字典序生成全排列的函数next_permutation即可枚举全排列。对于每一组数,通过计算可以知道它是否能得出已知结果。最先找到的那组数就是字典序最小的值。
/*
input:
4 16
output:
3 1 2 4
*/
#include <cstdio>
#include <algorithm> using namespace std; const int MAX_N = ; //输入
int N, finalSum; int a[MAX_N][MAX_N]; //保存序列以及计算序列结果 int calulate(){
//计算序列所得的最后和
for(int i = ; i < N; i ++){
for(int j = ; j < N - i; j ++){
a[i][j] = a[i - ][j] + a[i - ][j + ];
}
}
return a[N - ][];
} void solve(){
//初始化序列
for(int i = ; i < N; i ++)
a[][i] = i + ;
//按字典序枚举全排列
do{
int sum = calulate();
if(sum == finalSum){
printf("%d", a[][]);
for(int i = ; i < N; i ++){
printf(" %d", a[][i]);
}
printf("\n");
break;
}
}while(next_permutation(a[], a[] + N)); } int main(int argc, char const *argv[]){ scanf("%d %d", &N, &finalSum);
solve(); return ;
}
POJ 3187 穷举的更多相关文章
- POJ 2718 穷举
		
题意:给定一组数字,如0, 1, 2, 4, 6, 7,用这些数字组成两个数,并使这两个数之差最小.求这个最小差.在这个例子上,就是204和176,差为28. 分析:首先可以想到,这两个数必定是用各一 ...
 - POJ 3050 穷举
		
题意:给定一个5*5的地图,每个格子上有一个数字.从一个格子出发(上下左右4个方向),走5步将数字连起来可以构造出一个6位数.问该地图可以构造出多少个不同的6位数. 分析:可以对每个格子做深度优先遍历 ...
 - 穷举(四):POJ上的两道穷举例题POJ 1411和POJ 1753
		
下面给出两道POJ上的问题,看如何用穷举法解决. [例9]Calling Extraterrestrial Intelligence Again(POJ 1411) Description A mes ...
 - [C++11][算法][穷举]输出背包问题的所有可满足解
		
关于背包问题的题目,前人之述备矣,这里只讨论实现 输入: n ca w_1 v_1 w_2 v_2 ... w_n v_n 其中,n是物品总数,ca是背包大小,w_n是第n个物品的重量,v_n是第n个 ...
 - C#穷举
		
穷举: 穷举法的基本思想是根据题目的部分条件确定答案的大致范围, 并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕.若某个情况验证符合题目的全部条件,则为本问题的一个解:若全部情况验证后都 ...
 - C#语句2——循环语句(for穷举、迭代和while循环)
		
一.for循环拥有两类: (一).穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品.洗发水15元,香皂2元,牙刷5元. ...
 - 穷举、迭代、以及while代替for循环的使用
		
for循环的穷举: 就是所有情况走一遍,使用if筛选出符合的情况. while循环分为2个格式 (1)先判断再做while(){}(2)不管对错,先做了在判断do{}whlie() 百鸡百钱的whil ...
 - 2016年10月10日--穷举、迭代、while循环
		
穷举 将所有可能性全部全部走一遍,使用IF筛选出满足的情况 练习: 1.单位给发了一张150元购物卡, 拿着到超市买三类洗化用品. 洗发水15元,香皂2元,牙刷5元. 求刚好花完150元,有多少种买法 ...
 - while do while以及穷举和迭代
		
今天的新内容1:while循环 格式: while() { } 初始状态要在循环外提前规定 状态改变要写在花括号里面 括号内是循环条件 for循环与while循环的对比: 2:do while 不管循 ...
 
随机推荐
- tableView尾部多处一部分空白高度
			
问题出现的原因:创建tableView时使用的style是UITableViewStylePlain 解决办法: 在创建tableView时,self.automaticallyAdjustsScro ...
 - pthread_setcanceltype 线程取消
			
取消线程: (1)一个线程可以调用pthread_cancel来取消另一个线程. (2)被取消的线程需要被join来释放资源. (3)被取消的线程的返回值为PTHREAD_CANCELED ...
 - 【POJ2752】【KMP】Seek the Name, Seek the Fame
			
Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...
 - C宏系统缺陷
			
这两天稍稍看了一下boost的preprocessor库,发觉boost那帮疯子竟然利用各种奇技淫巧定义出各种数据类型和结构,还在上面定义出加减乘除等等各种运算,在快速浏览的过程中,还瞄到了很眼熟的各 ...
 - Java compile时,提示 DeadCode的原因
			
在工程编译时,编译器发现部分代码是无用代码,则会提示:某一行代码是DeadCode.今天compile工程的时候发现某一个循环出现这个问题,如下: public void mouseOver(fina ...
 - IE6中的常见BUG与相应的解决办法
			
开发前端的同学一定都知道,IE6是兼容BUG最多的浏览器,它不支持PNG alpha通道暂且不论.其文档的解析理解规范也引起了诸多恼人的BUG,有时甚至让人感到绝望.本文主要讲解一些比较容易遇到的IE ...
 - PHP第一课笔记
			
打算以后学习PHP,花3个月时间学会它,自己为自己加油.每天坚持学习,第一天感觉良好,没开始写,所以不敢觉难,在难也学,加油,me!! PHP笔记记录(2014.7.27) ★web开发的介绍 1.动 ...
 - EasyUI篇のico
			
所有图标位置: /themes/icons css引用位置: /themes/icon.css 可自行添加16*16的小图片放在icons中,icon.css代码添加即可 例如: .icon-logo ...
 - WPF学习笔记-使用自定义资源字典(style)文件
			
1.添加资源字典文件style.xmal 2.在资源字典中添加自定义style等 <ResourceDictionary xmlns="http://schemas.microsoft ...
 - 如何重载ComboBox 使其下拉按钮(带下箭头的)和下拉列表的垂直滚动条的宽度改变?(自绘ComboBox) [转]
			
原文地址:http://bbs.csdn.net/topics/390135022 http://blog.csdn.net/scsdn/article/details/4363299 想使用winf ...