加载中…
个人资料
abentu
abentu
  • 博客等级:
  • 博客积分:0
  • 博客访问:15,882
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

poj3087-Shuffle'm Up

(2010-07-23 15:11:54)
标签:

杂谈

    洗牌游戏,题意比较好理解,一道简单的模拟题~

    水过~~

 

代码:

 

#include "stdio.h"
#include "string.h"
#include "memory.h"
#define N 210
int n,c,result,u,j;
char s1[N],s2[N],aim[2*N],s0[2*N],s[2*N];
int init()
{
 scanf("%d",&c);
     getchar();
 scanf("%s",s1);
 getchar();
 scanf("%s",s2);
 getchar();
 scanf("%s",aim);
 int i;
 for (i = 0;i <= c-1;i ++)
  s[i] = s2[i];
 for (i = c;i <= 2*c-1;i ++)
  s[i] = s1[i-c];
 s[2*c] = '\0';
 return 0;
}
  
int judge()
{
 u = 0;
 if (strcmp(s,aim) == 0)
  u = 1;
 else if (strcmp(s,s0) == 0 && result > 1)
  u = -1;
 return u;
}
int wash()
{
 result ++;
 memset(s,0,sizeof(s));
 int i;
 for (i = 0;i <= c-1;i ++)
 {
  s[2*i] = s2[i];
  s[2*i+1] = s1[i];
 }
 s[2*c] = '\0';
 for (i = 0;i <= c-1;i ++)
  s1[i] = s[i];
 s1[c] = '\0';
 for (i = 0;i <= c-1;i ++)
  s2[i] = s[i+c];
 s2[c] = '\0';
 if (result == 1)
  strcpy(s0,s);
 return 0;
}
 

int main()
{
 freopen("3.txt","r",stdin);
 scanf("%d",&n);
 j = 0;
 while(++j <= n)
 {
  memset(s1,0,sizeof(s1));
  memset(s2,0,sizeof(s2));
  memset(aim,0,sizeof(aim));
  memset(s0,0,sizeof(s0));
  result = 0;
  init();
  while(1)
  {
   wash();
   if(judge() != 0)
    break;
  }
  if (u == -1)
   printf("%d %d\n",j,-1);
  else if (u == 1)
   printf("%d %d\n",j,result);
 }
 return 0;
}
 
 
 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有