poj 3781
来源:互联网 发布:excel数组 编辑:程序博客网 时间:2024/05/20 23:40
题意:给你n个数。求出n个数的规律和(由相邻的数相加,每次减小一个数,直到只剩1个数)。
这是杨辉三角的性质。
好,接下来的全排列,可以使用STLd的next_permutation。这只比dfs慢一丢丢。
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 15;int n, ans;int yang[maxn][maxn], num[maxn];void init(){ for(int i = 0; i < maxn; i++) for(int j = 0; j <= i; j++) { if(j == 0 || j == i) yang[i][j] = 1; else yang[i][j] = yang[i - 1][j] + yang[i - 1][j - 1]; }}bool vis[maxn];bool dfs(int deep, int sum){ //printf("%d %d\n", sum, deep); if(sum > ans) return 0; if(deep == n) { //printf("%d %d\n", sum, deep); if(ans == sum) return true; else return false; } for(int i = 1; i <= n; i++) { if(!vis[i]) { vis[i] = 1; num[deep] = i; if(dfs(deep + 1, sum + i * yang[n - 1][deep])) { //printf("yes\n"); return true; } //printf("%d\n", sum); vis[i] = 0; } } return false;//这个一定要注意}int main(){ init(); while(scanf("%d%d", &n, &ans) == 2) { memset(vis, 0, sizeof(vis)); dfs(0, 0); for(int i = 0; i < n - 1; i++) printf("%d ", num[i]); printf("%d\n", num[n - 1]); } return 0;}
STL:next_permutation()
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 15;int n, ans;int yang[maxn][maxn], num[maxn];void init(){ for(int i = 0; i < maxn; i++) for(int j = 0; j <= i; j++) { if(j == 0 || j == i) yang[i][j] = 1; else yang[i][j] = yang[i - 1][j] + yang[i - 1][j - 1]; }}int main(){ init(); while(scanf("%d%d", &n, &ans) == 2) { int sum; for(int i = 0; i <= 10; i++) num[i] = i + 1; do { sum = 0; for(int i = 0; i < n; i++) { sum += num[i] * yang[n - 1][i]; if(sum > ans) break; } if(sum == ans) break; } while(next_permutation(num, num + n)); //printf("%d\n", sum); for(int i = 0; i < n - 1; i++) printf("%d ", num[i]); printf("%d\n", num[n - 1]); } return 0;}
阅读全文
0 0
- poj 3781
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- OpenStack公共组件oslo之十三——oslo.cache
- <VRTK学习三> 拿取使用物体
- 《集合》
- * 期末考试 编程题#4:计算整数平方和(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 谈一谈自己对依赖、关联、聚合和组合之间区别的理解
- poj 3781
- 类加载器
- java中AWT和SWing的区别与联系
- [学习笔记][Java编程思想]第10章:内部类
- C数组解决魔术师发牌问题
- 【Ubuntu】安装字体
- 多线程编程学习::POSIX 多线程基础(二)
- SpringBoot学习(一)
- Mysql之查询