Message Decoding 信息解码UVA 213

朴灿烈づ我的快乐病毒、 2024-02-17 18:46 133阅读 0赞
  1. #include
  2. #include
  3. char codes[8][1<<8]; //用于储存编码头字符集
  4. //char ch[1<<8];
  5. char readchar(){ //此函数由于读取非换行回车的字符
  6. for(;;){
  7. char ch=getchar();
  8. if(ch!=’\n’ && ch!=’\r’)return ch;
  9. }
  10. }
  11. int readint(int c){ //用于读取长度为length的编码的十进制数值大小

  12. int temp=0;
  13. while(c—){
  14. char ch=readchar();
  15. temp=2*temp+ch-‘0’;
  16. }
  17. return temp;
  18. }
  19. int readcodes(){ //获取编码头,注意每次要清空数组
  20. memset(codes,0,sizeof(codes));
  21. codes[1][0]=readchar();
  22. char ch;
  23. for(int len=2;len<8;len++){
  24. for(int value=0;value<(1<<len)-1;value++){
  25. ch=getchar();
  26. if(ch==EOF)return 0;
  27. if(ch==’\n’ || ch== ‘\r’) return 1;
  28. codes[len][value]=ch;
  29. }
  30. }
  31. }
  32. int main(){
  33. while(readcodes()){
  34. // memset(ch,0,sizeof(ch));
  35. int count=0;
  36. int length;
  37. while((length=readint(3))!=0){
  38. for(;;){
  39. int len1=readint(length);
  40. if(len1==(1<<length)-1)break;//左移运算符优先级低于算术运算符
  41. //ch[count++]=codes[length][len1];
  42. putchar(codes[length][len1]);
  43. }
  44. }
  45. // puts(ch);
  46. putchar(‘\n’);
  47. }
  48. return 0;
  49. }

有一点不明白的是,为什么提交我注释的那些代码结果是错误的,对输出格式不是很清楚,希望知道的大牛们指导一下,谢谢

发表评论

表情:
评论列表 (有 0 条评论,133人围观)

还没有评论,来说两句吧...

相关阅读