poj3187Backward Digit Sums(暴力dfs)
2013-12-22 10:34
148 查看
题目请戳这里
题目大意:给一个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
;
bool flag
,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
[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;
}
题目大意:给一个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
;
bool flag
,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
[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;
}
相关文章推荐
- poj3187 Backward Digit Sums---dfs暴力枚举
- UVA - 10487 Closest Sums 暴力
- HDU 4337 King Arthur's Knights(暴力dfs)
- Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)
- 2017蓝桥杯模拟题 滑动解锁(暴力DFS)
- POJ 3187 Backward Digit Sums(DFS)
- UVA - 10317 Equating Equations(普通的暴力枚举 dfs枚举 c(n,m))
- POJ 1753 Flip Game (DFS + 暴力枚举)
- ZSC oj 1538(DFS||暴力)
- hdu 1010 Tempter of the Bone(dfs暴力)
- POJ 3187 Backward Digit Sums (dfs全排列)
- hdu 4770 Lights Against Dudely(暴力枚举dfs)
- 蓝桥杯 未名湖边的烦恼 (简单暴力dfs)
- UVA 818 - Cutting Chains(暴力+dfs判环+位运算)
- hdu5612 Baby Ming and Matrix games (dfs加暴力)
- 蓝桥 牌型总数 dfs(暴力)
- 2016年蓝桥杯A组 寒假作业(暴力枚举||dfs)
- PAT 1104 Sum of Number Segments (暴力DFS)
- poj2965(dfs暴力枚举)
- 【BZOJ】1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(暴力dfs+set判重)