POJ 3187(Backward Digit Sums 穷竭搜索,杨辉三角性质)
2016-03-28 22:57
459 查看
//题意略 #include<cstdio> #include<iostream> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> #include<string> #include<cstring> #include<cstdlib> #include<cctype> #include<sstream> #include<stack> #include<functional> using namespace std; typedef long long ll; typedef pair<int, int> P; const int INF=0x3f3f3f3f; int sum, n; int Cn[11]; int num[11]; bool vis[11]; bool flag; int C(int n, int i){ return i == 0 || n == i ? 1 : C(n - 1, i - 1) + C(n - 1, i); } void dfs(int dep, int cursum){ if(flag || cursum > sum)return; if(dep >= n && cursum == sum){ for(int i = 0; i < n; i++) printf("%d%c", num[i], i == n - 1 ? '\n' : ' '); flag = true; } for(int i = 1; i <= n; i++){ if(flag)return; if(!vis[i]){ num[dep] = i; vis[i] = true; //杨辉三角性质 dfs(dep + 1, cursum + Cn[dep] * i); vis[i] = false; } } } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); #endif //ios::sync_with_stdio(false); cin >> n >> sum; for(int i = 0; i < n; i++) Cn[i] = C(n - 1, i); flag = false; dfs(0, 0); return 0; }
相关文章推荐
- 汉字转换拼音
- Android:gravity和Android:layout_gravity的区别
- 添加FB登陆时,需要curl扩展
- 算法训练 排列问题
- Spring JDBC学习笔记(1):查询数据库数据之JdbcTemplate的使用
- Android常见的泄露以及解决策略
- POJ 2418 简单trie树
- POJ 2418 简单trie树
- HDU 2795 线段树第三发!
- docker(2)
- Spring 依赖注入 @Autowired @Inject
- 单元测试:复利计算
- MyBatis学习总结(一)——MyBatis快速入门
- leetcode_082 Remove Duplicates from Sorted List
- c#观察者模式
- flash跨域策略文件crossdomain.xml配置详解
- Android——Intent.setClass()
- UI控件--ProgressBar
- 人生不能光溜溜的来,再光溜溜的走
- EXTJS之Ext.util.Observable自定义事件