题意:

      给你一个字符串,问你能不能拆成两个相同的字符串,顺序不能改变.

思路:

      咋一看数据有点大,搜索过不去,但想想优化的地方很多,而且每个字母最多出现四次,所以多几个剪纸应该会过.

#include<stdio.h>
#include<string.h> #define N 2000 + 10

int
ans1[N] ,ans2[N];
int
s1[N] ,s2[N] ,s[N];
int
num[N] ,now[N] ,n;
int
ok; bool okk1(int l1 ,int l2 ,int id)
{
if(
s1[num[id]] >= s[num[id]] / 2)
return
0;
if(
l1 >= l2) return 1;
else if(
num[id] == ans2[l1]) return 1;
else return
0;
}
bool
okk2(int l1 ,int l2 ,int id)
{
if(
l2 >= l1) return 1;
else if(
num[id] == ans1[l2]) return 1;
else return
0;
} void
DFS(int l1 ,int l2 ,int id)
{
if(
ok) return ;
if(
l1 > n / 2 + 1 || l2 > n / 2 + 1)
return;
if(
l1 == n / 2 + 1 && l2 == n / 2 + 1)
{

ok = 1;
return ;
}
if(
okk1(l1 ,l2 ,id) && !ok)
{

now[id] = 0;
ans1[l1] = num[id];
s1[now[id]] ++;
DFS(l1 + 1 ,l2 ,id + 1);
s1[now[id]] --;
}
if(
okk2(l1 ,l2 ,id) && !ok)
{

now[id] = 1;
ans2[l2] = num[id];
s2[num[id]] ++;
DFS(l1 ,l2 + 1 ,id + 1);
s2[num[id]] --;
}
} int main ()
{
int
t ,i;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d" ,&n);
memset(s ,0 ,sizeof(s));
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d" ,&num[i]);
s[num[i]] ++;
s1[i] = s2[i] = 0;
}

ok = 0;
DFS(1 ,1 ,1);
for(
i = 1 ;i < n ;i ++)
printf("%d" ,now[i]);
printf("%d\n" ,now[i]);
}
return
0;
}

最新文章

  1. Leetcode--Swap Nodes in Pairs
  2. swift 闭包循环引用
  3. Unity 对象查找
  4. 实现系统函数time,获取当前时间与UTC的间隔
  5. 未能加载文件或程序集&quot;System.Data,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089&quot;或它的某一个依赖项。系统找不到指定的文件。
  6. MySQL无视密码进入Server
  7. HDU 3308 LCIS 线段树区间更新
  8. Merge Intervals——LeetCode
  9. ubuntu12.10下arm-linux-gcc交叉编译环境的搭建
  10. OpenCV2.x自学笔记——最大类间方差法OTSU
  11. 深入hibernate的三种状态
  12. 江西理工大学南昌校区cool code竞赛
  13. eclipse中的出现在打包一次后,后面新建的项目都出错了,出现support_v7下面出现红线及解决方法及为什么eclipse中项目继承ActionBarActivity解决方法一样
  14. Android View体系(八)从源码解析View的layout和draw流程
  15. dos 设置 Windows 网络命令
  16. cordova 内部API 用ssl https,报错
  17. KM算法 带权二分匹配 O(n^3)
  18. windows 文件/文件夹操作
  19. Elasticsearch基本原理分析
  20. Elasticsearch 基础概念知识

热门文章

  1. 浅谈.Net Core后端单元测试
  2. 零投资!零风险!手把手教你挖pi币
  3. 分布式基础理论之CAP 和BASE
  4. 敏捷史话(九):用做面包的方式做敏捷——Alistair Cockburn
  5. 冗余网络构建方案对比:VRRP协议、多网卡绑定及WN202冗余链路网卡
  6. Python基础学习【day2】
  7. 92反转链表II
  8. PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642
  9. Linux 常用系统性能命令总结
  10. Distributed | MapReduce