poj3187Backward Digit Sums(暴力dfs)
来源:互联网 发布:js北京颜色修改 编辑:程序博客网 时间:2024/06/15 02:22
题目请戳这里
题目大意:给一个n(<=10),然后用n的一个全排列做为第一行,然后相邻2个数做和,放到下一行,这样组成一个倒着的数塔,第n行只剩下了一个sum.现在给你一个n和一个sum,求第一行字典序最小的一个排列.
题目分析:最坏10!复杂度,直接爆搜啦,剪枝都免了,妥妥的
详情请见代码:
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 11;int lcm[N][N];bool flag[N],ok;int n,sum;void dfs(int cur,int dp){ if(ok) return; lcm[1][dp] = cur; int i; for(i = 2;i <= dp;i ++) lcm[i][dp - i + 1] = lcm[i - 1][dp - i + 1] + lcm[i - 1][dp - i + 2]; if(dp == n) { if(lcm[n][1] == sum) { for(i = 1;i <= n;i ++) printf("%d%c",lcm[1][i],i == n?'\n':' '); ok = true; } return; } for(i = 1;i <= n;i ++) { if(!flag[i]) { flag[i] = true; dfs(i,dp + 1); flag[i] = false; } }}void fuck(){ memset(flag,false,sizeof(flag)); ok = false; for(int i = 1;i <= n && !ok;i ++) { flag[i] = true; dfs(i,1); flag[i] = false; }}int main(){ while(scanf("%d%d",&n,&sum) != EOF) { fuck(); } return 0;}
0 0
- poj3187Backward Digit Sums(暴力dfs)
- poj3187Backward Digit Sums(dfs)
- poj3187Backward Digit Sums(DFS)
- POJ3187Backward Digit Sums【dfs 暴搜水题】
- poj3187 Backward Digit Sums---dfs暴力枚举
- [暴力搜索] poj 3187 Backward Digit Sums
- poj 3187 Backward Digit Sums 【STL暴力】
- Poj 3187 Backward Digit Sums【暴力+排列组合】
- POJ3187——Backward Digit Sums(暴力)
- Backward Digit Sums (全排列 + 暴力)
- POJ3187 Backward Digit Sums【全排列+暴力】
- POJ 3187 Backward Digit Sums(暴力)
- POJ 3187 Backward Digit Sums(dfs)
- Backward Digit Sums - POJ 3187 DFS
- Backward Digit Sums --- DFS+全排列
- POJ 3187 Backward Digit Sums(DFS)
- poj--3187--Backward Digit Sums(dfs)
- POJ 3187:Backward Digit Sums(dfs)
- 常用命令及系统环境变量的设置——脚本文件
- ASP WEBSHELL权限总结
- 遍历和读取LUA文件中表的元素Demo
- 2013年总结(3)-活动篇
- Django 1.6 配置自定义grappelli-tinyMce
- poj3187Backward Digit Sums(暴力dfs)
- Mybatis学习笔记(一)
- 绘制连续线条 改变鼠标形状
- 进制转化(高到低)
- Reverse Linked List II
- min3d框架源码分析(一)
- NGUI插件三 制作字体集和图集
- GMT 入门
- 移植内核过程的几个问题