Wannafly模拟赛5 D Aria 全排列
2017-11-04 08:45
337 查看
思路:直接上next_permutation(a,a+n)数组开头和结尾,和sort一样。过了%20数据的童鞋试试把数组放dfs里面,因为每次dfs都会加上一个值,回溯求全排列的时候相当于己经不是原来的数组或者string,所以全局的话还要减去那个值。
#include<iostream> #include <cstdio> #include <algorithm> #include <queue> #include <cstring> using namespace std; typedef long long LL; const int MAXN = 105; const LL inf = 0x3f3f3f3f3f3f3f3f; int a[MAXN]; int n, ans; void dfs(int cur, int sum) { if(cur==n+1) { ans=max(ans, sum); return ; } int cnt=0; sum+=a[cur]; int num[MAXN]={}; while(sum) { num[cnt++]=sum%10; sum/=10; } sort(num,num+cnt); do { int s=0; for(int i=0;i<cnt;++i) s=s*10+num[i]; dfs(cur+1,s); }while(next_permutation(num, num+cnt)); } int main() { while(~scanf("%d", &n)) { for(int i=1;i<=n;++i) scanf("%d", &a[i]); ans=0; dfs(1, 0); printf("%d\n", ans); } return 0; }
相关文章推荐
- Wannafly模拟赛 矩阵 二维矩阵hash
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛4 B Distance
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛4 D Fancy Signal Translate(字典树)
- Wannafly模拟赛5 A Split
- Wannafly模拟赛 树(dp)
- Wannafly模拟赛3 题解
- Wannafly模拟赛3 贝伦卡斯泰露(搜索+剪枝)
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛4 C Sum(线段树)
- Wannafly模拟赛5 D Aria
- Wannafly模拟赛3 监视任务(贪心+线段树)
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛4 C Sum(树状数组)
- Wannafly模拟赛3 生物课程
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Nowcode Sum(Wannafly模拟赛4)
- Wannafly模拟赛3
- 【大二最后一题】Wannafly模拟赛 矩阵【二分+二维字符串Hash】