Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

机子上好好的,怎么就废了?

Posted by lxt at 2006-07-16 11:23:22 on Problem 1051
麻烦各位看一看:
(用C,很长!但重复部分不会错)
#include<stdio.h>
#include<string.h>
void judge(char s[],int stack[],int num[])
{int top=0,len,i,top2=0;
 len=strlen(s);
 for(i=0;i<len;i++)
       if(s[i]=='A'){stack[++top]=0;stack[++top]=1;num[++top2]=2;}
  else if(s[i]=='B'){stack[++top]=1;stack[++top]=0;stack[++top]=0;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='C'){stack[++top]=1;stack[++top]=0;stack[++top]=1;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='D'){stack[++top]=1;stack[++top]=0;stack[++top]=0;num[++top2]=3;}
  else if(s[i]=='E'){stack[++top]=0;num[++top2]=1;}
  else if(s[i]=='F'){stack[++top]=0;stack[++top]=0;stack[++top]=1;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='G'){stack[++top]=1;stack[++top]=1;stack[++top]=0;num[++top2]=3;}
  else if(s[i]=='H'){stack[++top]=0;stack[++top]=0;stack[++top]=0;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='I'){stack[++top]=0;stack[++top]=0;num[++top2]=2;}
  else if(s[i]=='J'){stack[++top]=0;stack[++top]=1;stack[++top]=1;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='K'){stack[++top]=1;stack[++top]=0;stack[++top]=1;num[++top2]=3;}
  else if(s[i]=='L'){stack[++top]=0;stack[++top]=1;stack[++top]=0;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='M'){stack[++top]=1;stack[++top]=1;num[++top2]=2;}
  else if(s[i]=='N'){stack[++top]=1;stack[++top]=0;num[++top2]=2;}
  else if(s[i]=='O'){stack[++top]=1;stack[++top]=1;stack[++top]=1;num[++top2]=3;}
  else if(s[i]=='P'){stack[++top]=0;stack[++top]=1;stack[++top]=1;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='Q'){stack[++top]=1;stack[++top]=1;stack[++top]=0;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='R'){stack[++top]=0;stack[++top]=1;stack[++top]=0;num[++top2]=3;}
  else if(s[i]=='S'){stack[++top]=0;stack[++top]=0;stack[++top]=0;num[++top2]=3;}
  else if(s[i]=='T'){stack[++top]=1;num[++top2]=1;}
  else if(s[i]=='U'){stack[++top]=0;stack[++top]=0;stack[++top]=1;num[++top2]=3;}
  else if(s[i]=='V'){stack[++top]=0;stack[++top]=0;stack[++top]=0;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='W'){stack[++top]=0;stack[++top]=1;stack[++top]=1;num[++top2]=3;}
  else if(s[i]=='X'){stack[++top]=1;stack[++top]=0;stack[++top]=0;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='Y'){stack[++top]=1;stack[++top]=0;stack[++top]=1;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='Z'){stack[++top]=1;stack[++top]=1;stack[++top]=0;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='_'){stack[++top]=0;stack[++top]=0;stack[++top]=1;stack[++top]=1;num[++top2]=4;}
  else if(s[i]==','){stack[++top]=0;stack[++top]=1;stack[++top]=0;stack[++top]=1;num[++top2]=4;}
  else if(s[i]=='.'){stack[++top]=1;stack[++top]=1;stack[++top]=1;stack[++top]=0;num[++top2]=4;}
  else if(s[i]=='?'){stack[++top]=1;stack[++top]=1;stack[++top]=1;stack[++top]=1;num[++top2]=4;}
   
   }



int work(int u)
{char s[1000];
 int l,i;
 scanf("%s",s);
 int stack[1000],num[1000],top=0;
 judge(s,stack,num);
 l=strlen(s);
 printf("%d: ",u);
 for(i=l;i>=1;i--)
      if((num[i]==2)&&(stack[top+1]==0)&&(stack[top+2]==1))
      {top=top+num[i];printf("A");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==0)&&(stack[top+4]==0))
      {top=top+num[i];printf("B");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==1)&&(stack[top+4]==0))
      {top=top+num[i];printf("C");}
 else if((num[i]==3)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==0))
      {top=top+num[i];printf("D");}
 else if((num[i]==1)&&(stack[top+1]==0))
      {top=top+num[i];printf("E");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==1)&&(stack[top+4]==0))
      {top=top+num[i];printf("F");}
 else if((num[i]==3)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==0))
      {top=top+num[i];printf("G");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==0)&&(stack[top+4]==0))
      {top=top+num[i];printf("H");}
 else if((num[i]==2)&&(stack[top+1]==0)&&(stack[top+2]==0))
      {top=top+num[i];printf("I");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==1)&&(stack[top+4]==1))
      {top=top+num[i];printf("J");}
 else if((num[i]==3)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==1))
      {top=top+num[i];printf("K");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==0)&&(stack[top+4]==0))
      {top=top+num[i];printf("L");}
 else if((num[i]==2)&&(stack[top+1]==1)&&(stack[top+2]==1))
      {top=top+num[i];printf("M");}
 else if((num[i]==2)&&(stack[top+1]==1)&&(stack[top+2]==0))
      {top=top+num[i];printf("N");}
 else if((num[i]==3)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==1))
      {top=top+num[i];printf("O");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==1)&&(stack[top+4]==0))
      {top=top+num[i];printf("P");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==0)&&(stack[top+4]==1))
      {top=top+num[i];printf("Q");}
 else if((num[i]==3)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==0))
      {top=top+num[i];printf("R");}
 else if((num[i]==3)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==0))
      {top=top+num[i];printf("S");}
 else if((num[i]==1)&&(stack[top+1]==1))
      {top=top+num[i];printf("T");}
 else if((num[i]==3)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==1))
      {top=top+num[i];printf("U");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==0)&&(stack[top+4]==1))
      {top=top+num[i];printf("V");}
 else if((num[i]==3)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==1))
      {top=top+num[i];printf("W");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==0)&&(stack[top+4]==1))
      {top=top+num[i];printf("X");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==0)&&(stack[top+3]==1)&&(stack[top+4]==1))
      {top=top+num[i];printf("Y");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==0)&&(stack[top+4]==0))
      {top=top+num[i];printf("Z");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==0)&&(stack[top+3]==1)&&(stack[top+4]==1))
      {top=top+num[i];printf("_");}
 else if((num[i]==4)&&(stack[top+1]==0)&&(stack[top+2]==1)&&(stack[top+3]==0)&&(stack[top+4]==1))
      {top=top+num[i];printf(",");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==1)&&(stack[top+4]==0))
      {top=top+num[i];printf(".");}
 else if((num[i]==4)&&(stack[top+1]==1)&&(stack[top+2]==1)&&(stack[top+3]==1)&&(stack[top+4]==1))
      {top=top+num[i];printf("?");}
 printf("\n"); 
 return 0;}

int main()
{int i,n;
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 work(i);
 return 0;}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator