POJ - 3087 模拟 [kuangbin带你飞]专题一
2017-02-13 20:48
381 查看
模拟洗牌的过程,合并两堆拍的方式:使先取s2,再取s1;分离成两堆的方式:下面C张放到s1,上面C张到s2。当前牌型与第一次相同时,说明不能搜索到答案。
AC代码
#include<cstdio>
#include<cstring>
const int maxn = 100 + 5;
char s1[maxn], s2[maxn], s3[maxn * 2], s4[maxn * 2], vis[maxn * 2];
int c;
void deal(char *a){
int cur = 0;
for(int i = 0; i < c; ++i){
a[cur++] = s2[i];
a[cur++] = s1[i];
}
a[cur] = '\0';
}
void deal(){
for(int i = 0; i < c; ++i){
s1[i] = s3[i];
s2[i] = s3[i + c];
}
}
int dfs(int cnt){
deal(s3);
if(!memcmp(s3, s4, sizeof(s4))) return cnt;
if(cnt > 1 && !memcmp(s3, vis, sizeof(vis))) return -1;
deal();
return dfs(cnt + 1);
}
int main(){
int T;
scanf("%d", &T);
int kase = 1;
while(T--) {
scanf("%d", &c);
scanf("%s%s%s", s1, s2, s4); //s4是目标
printf("%d ", kase++);
deal(vis);
printf("%d\n", dfs(1));
}
return 0;
}
如有不当之处欢迎指出!
AC代码
#include<cstdio>
#include<cstring>
const int maxn = 100 + 5;
char s1[maxn], s2[maxn], s3[maxn * 2], s4[maxn * 2], vis[maxn * 2];
int c;
void deal(char *a){
int cur = 0;
for(int i = 0; i < c; ++i){
a[cur++] = s2[i];
a[cur++] = s1[i];
}
a[cur] = '\0';
}
void deal(){
for(int i = 0; i < c; ++i){
s1[i] = s3[i];
s2[i] = s3[i + c];
}
}
int dfs(int cnt){
deal(s3);
if(!memcmp(s3, s4, sizeof(s4))) return cnt;
if(cnt > 1 && !memcmp(s3, vis, sizeof(vis))) return -1;
deal();
return dfs(cnt + 1);
}
int main(){
int T;
scanf("%d", &T);
int kase = 1;
while(T--) {
scanf("%d", &c);
scanf("%s%s%s", s1, s2, s4); //s4是目标
printf("%d ", kase++);
deal(vis);
printf("%d\n", dfs(1));
}
return 0;
}
如有不当之处欢迎指出!
相关文章推荐
- [kuangbin带你飞]专题一 简单搜索G - Shuffle'm Up(POJ 3087)
- [kuangbin带你飞]专题1 简单搜索 G - Shuffle'm Up POJ - 3087
- [kuangbin带你飞]专题一 简单搜索 G - Shuffle'm Up poj 3087
- POJ 3087 Shuffle'm Up(kuangbin带你飞 专题一:简单搜索)专题一完结
- [kuangbin带你飞]专题十二 基础DP1 L POJ 1458
- [kuangbin带你飞]专题一 简单搜索 H - Pots poj 3414
- POJ - 3984 bfs [kuangbin带你飞]专题一
- [kuangbin带你飞]专题六 最小生成树 B POJ 1287
- POJ - 3087 Shuffle'm Up(15.10.10 搜索专题)模拟
- [kuangbin带你飞]专题一 简单搜索 A - 棋盘问题(POJ 1321)
- POJ 2253 Frogger(kuangbin带你飞 专题四:最短路)
- POJ - 2251 bfs [kuangbin带你飞]专题一
- POJ - 3126 bfs + 素数筛法 [kuangbin带你飞]专题一
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- POJ 1321 棋盘问题---[kuangbin带你飞]专题一 简单搜索
- [kuangbin带你飞]专题1 简单搜索 A - 棋盘问题 POJ - 1321
- [kuangbin带你飞]专题五 并查集 N POJ 1308
- [kuangbin带你飞]专题六 最小生成树 C POJ 2031
- [kuangbin带你飞]专题1 简单搜索 H - Pots POJ - 3414
- [kuangbin带你飞]专题十二 基础DP1 R POJ 3616