我叫张小黑
张小黑的挣扎生活
posts - 66,  comments - 109,  trackbacks - 0

 

 1***********1934********************************
 2-----------------------------------------------
 3#include<iostream>
 4#define Max 30
 5using namespace std;
 6int M[Max][Max];
 7int R,C;
 8char code[1000];
 9struct node{
10    int x,y;
11    void operator=(node a)
12    {x=a.x;y=a.y;}
13};node start;
14node direct[4];
15void init()
16{
17    direct[0].x=0;direct[0].y=1;//right
18    direct[1].x=1;direct[1].y=0;//down
19    direct[2].x=0;direct[2].y=-1;//left
20    direct[3].x=-1;direct[3].y=0;//up
21}
22int setl(char c,int d)//d表示方向
23{
24    int t,b[5],i=0,j;
25    int p,q;//放置的位置
26    memset(b,0,sizeof(b));
27    if(c!=' '){
28        t=c-'A'+1;        
29        while(t>0){
30            b[i++]=t%2;
31            t/=2;}
32    }
33    for(i=d,j=4;j>=0;){
34        p=direct[i].x+start.x;
35        q=direct[i].y+start.y;
36        if(p<0||p>=R){i=(i+1)%4;continue;}
37        if(q<0||q>=C){i=(i+1)%4;continue;}
38        if(M[p][q]!=-1){i=(i+1)%4;continue;}
39        M[p][q]=b[j--];
40        start.x=p;
41        start.y=q;
42    }
43    return i;
44}
45void solve()
46{
47    int i,j,d=0;
48    for(i=0;code[i]!='\0';i++)
49        d=setl(code[i],d);
50    for(i=0;i<R;i++)
51        for(j=0;j<C;j++){
52            if(M[i][j]==-1)M[i][j]=0;
53            printf("%d",M[i][j]);}
54        printf("\n");
55}
56int main()
57{
58    /*freopen("1.ans","w",stdout);*/
59    int N,i,j;
60    char c;
61    init();
62    scanf("%d",&N);
63    for(i=1;i<=N;i++){
64        memset(M,-1,sizeof(M));
65        memset(code,0,sizeof(code));
66        start.x=0;start.y=-1;
67        scanf("%d %d",&R,&C);
68        getchar();
69        for(j=0;(c=getchar())!='\n';j++)
70            code[j]=c;
71        printf("%d ",i);
72        solve();}
73    return 0;
74}

 1******************************1935************************************************************
 2#include<iostream>
 3#define Max 21
 4using namespace std;
 5int M[Max][Max];
 6int R,C,d=0;//d表示方向
 7char code[90];
 8struct node{
 9    int x,y;
10    void operator=(node a){
11        x=a.x;
12        y=a.y;}
13};
14node start;
15node direct[4];
16void init()
17{
18    direct[0].x=0;direct[0].y=1;//right
19    direct[1].x=1;direct[1].y=0;//down
20    direct[2].x=0;direct[2].y=-1;//left
21    direct[3].x=-1;direct[3].y=0;//up
22}
23int get()
24{
25    int p,q,n=0;
26    int result=0;
27    for(;n<5;){
28        p=start.x+direct[d].x;
29        q=start.y+direct[d].y;
30        if(p<0||p>=R){d=(d+1)%4;continue;}
31        if(q<0||q>=C){d=(d+1)%4;continue;}
32        if(M[p][q]==-1){d=(d+1)%4;continue;}
33        n++;
34        start.x=p;
35        start.y=q;
36        result*=2;
37        result+=M[p][q];
38        M[p][q]=-1;}
39    return result;
40}
41void solve(int h)
42{
43    int t,i,j=-1;
44    for(i=0;i<h;i++){
45        t=get();
46        if(t==0)code[i]=' ';
47        else {
48            code[i]='A'+t-1;
49            j=i;}
50    }
51    for(i=0;i<=j;i++)
52        putchar(code[i]);
53    
54}
55int main()
56{
57    /*freopen("1935#1.in","r",stdin);
58    freopen("1935#3.out","w",stdout);*/
59  int N,i,j,k,tmp;
60  char c;
61  scanf("%d",&N);
62  getchar();
63  init();
64  for(i=1;i<=N;i++){
65      start.x=0;
66      start.y=-1;
67      scanf("%d %d",&R,&C);
68      tmp=(R*C)/5;
69      memset(M,0,sizeof(M));
70      getchar();
71      for(j=0;j<R;j++)
72          for(k=0;k<C;k++){
73              c=getchar();
74              M[j][k]=c-'0';
75          }
76          getchar();
77      printf("%d ",i);
78      solve(tmp);
79      putchar('\n');
80  }
81  return 0;
82}
posted on 2008-03-09 14:05 zoyi 阅读(227) 评论(1)  编辑 收藏 引用 所属分类: acm

FeedBack:
# re: ecnu 1934&&1935
2008-03-12 23:41 | Mcfaddan
原来这个是你。数学哦~链接下  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


欢迎光临 我的白菜菜园

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(8)

随笔分类

随笔档案

文章档案

相册

acmer

online judge

队友

技术

朋友

搜索

  •  

最新评论

阅读排行榜

评论排行榜