51nod 1400 序列分解 阻止我的只有读题能力了
来源:互联网 发布:怀卡托理工学院 知乎 编辑:程序博客网 时间:2024/05/15 13:49
1400 序列分解
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
小刀和大刀是双胞胎兄弟。今天他们玩一个有意思的游戏。 大刀给小刀准备了一个长度为n的整数序列。小刀试着把这个序列分解成两个长度为n/2的子序列。
这两个子序列必须满足以下两个条件:
1.他们不能相互重叠。
2.他们要完全一样。
如果小刀可以分解成功,大刀会给小刀一些糖果。
然而这个问题对于小刀来说太难了。他想请你来帮忙。
Input
第一行给出一个T,表示T组数据。(1<=T<=5)接下来每一组数据,输入共2行。第一行包含一个整数n (2<=n<=40且为偶数)。第二行给出n个整数a[0],a[1],a[2],…,a[n-1]表示大刀给小刀准备的序列。(-1,000,000,000<=a[i]<=1,000,000,000)
Output
如果小刀可以完成游戏,输出"Good job!!" (不包含引号),否则 输出"What a pity!" (不包含引号)。
Input示例
241 1 2 261 2 3 4 5 6
Output示例
Good job!!What a pity!
这个题 - - ,可能是我语文差吧。。。
读了一天没读懂 第二天看题解突然读懂题了
然后秒造代码。 代码出来都是差不多的。
阻止我的只有读题能力了。读题啊读题。心塞。
1.他们不能相互重叠。
2.他们要完全一样。
第一句话的意思是 指针一直向后推 , 然后把数字选择放到A集合或者B集合。
第二个 变成完全相等的两个集合 嗯 顺序都要一样 。
比较浅显的例子
141 7 10 1 7 4 5 7 1 10 7 4 5 1
首先 1 7 10 进入A集合。
之后 又碰到一个1 这时候就有两种情况了 1 要么还是A集合里的 要么是B集合里的
A:1 7 10
B:1
这时候 又碰到一个7 两种情况了 这个7要么是A集合里的,要么是B集合里的。 这时候 放到A集合里。
嗯 只是为了理解题意
A:1 7 10 7 4 5 1
B:1 7 10 7 4 5 1
然后 顺序出来这两个集合
大致意思 再解释一遍。
每次 遇到的数字,要么是集合A里的 要么是集合B里的
但是 两个集合 最后能分成完全一样的 连顺序都是一样的 才算完全一样
比如上述 如果碰到7的时候 放到B里面了 那就无法分成两个一样的了
这时候就用搜索搜出所有情况
#include<iostream>#include<cstring>#include<iomanip>#include<cmath>#include <string>#include <cstdio>#include <algorithm>#include <map>#include <queue>using namespace std;const int inf=-1000000001;int a[100];int tag[100];int n,flag;void dfs(int now,int sum){ if(flag==1)return ; if(sum>n/2)return ; if(now==n&&sum==n/2) { //for(int i=0;i<n;i++)cout<<tag[i]<<' ';cout<<endl; flag=1; return ; } tag[sum]=a[now]; dfs(now+1,sum+1); tag[now]=inf; if(now-sum+1<=sum&&a[now]==tag[now-sum])//情况二,遇到能放到集合B里面的 放或者不放。 { dfs(now+1,sum); }}int main(){ int t; cin>>t; while(t--) { flag=0; memset(a,0,sizeof(a)); cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) tag[i]=inf; dfs(0,0); if(flag==1)printf("Good job!!\n"); else printf("What a pity!\n"); }}
0 0
- 51nod 1400 序列分解 阻止我的只有读题能力了
- 51nod 1400 序列分解
- 51nod 1400 序列分解【Dfs+剪枝】好题~
- 51nod 1400 序列分解(DFS + 剪枝)
- 51nod 1400 序列分解(深搜)
- 51Nod-1400-序列分解
- 51 nod 1400 序列分解(dfs+剪枝)@
- 51nod oj 1400 序列分解 【dfs暴力】
- 是什么阻止了你的能力
- 51nod-序列分解(dfs)
- 51nod 算法马拉松3 A:序列分解
- 51nod round3# 序列分解(折半枚举+字典树)
- 51nod 分解
- 51nod-1537分解
- 51NOD 1537 分解
- [51nod 1537]分解
- 51nod 1537 分解
- 51nod 40 序列分解 暴力dfs or 折半+字典树
- jquery的autocomplete 自动完成使用自己的css
- 查看linux系统的默认shell
- 一种最简化的前后端通信方法
- [Leetcode]LeetCode 19:Remove Nth Node From End of List
- 追忆童年,用树莓派做个街机游戏机
- 51nod 1400 序列分解 阻止我的只有读题能力了
- 特征选择(feature selection)
- 输入框的隐藏和显示
- 45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
- Spring 框架参考文档(五)-The Web之视图技术
- 一个按钮触发两个事件
- hdu2037
- shell脚本开发规范
- Constituent Parsing & Dependency Parsing 句法分析简介