洛谷题解 P1320 【压缩技术(续集版)】

  • A+
所属分类:代码笔记 信息技术

简单的模拟:将点阵存入字符类型的二维数组,一行一行统计就行了。 数字变了就输出统计的个数。

  1. #include<iostream>  
  2. #include<cstring>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     char a[210][210];  
  7.     int i,j,n,s0=0,s1=0;  
  8.     cin>>a[0];  
  9.     n=strlen(a[0]);           //先读入一行来求n,方便下面几行的读入。   
  10.     for(i=1;i<n;i++)  
  11.     {  
  12.         cin>>a[i];  
  13.     }  
  14.     cout<<n<<" ";             //记得先输出n。   
  15.     if(a[0][0]=='1') cout<<"0 ";     //特别提示:由于从0开始记,所以如果第一种数字就是1,要先输出一个0代表0个0。   
  16.     for(i=0;i<n;i++)  
  17.     {  
  18.         for(j=0;j<n;j++)  
  19.         {  
  20.             //数字一变就输出统计的上一种数字的个数。(记得清零和空格)   
  21.             if(a[i][j]=='0') s0++;             //注意!是字符类型的数字!   
  22.             else if(s0!=0){  
  23.                 cout<<s0<<" ";  
  24.                 s0=0;  
  25.             }  
  26.             if(a[i][j]=='1') s1++;  
  27.             else if(s1!=0){  
  28.                 cout<<s1<<" ";  
  29.                 s1=0;  
  30.             }  
  31.         }  
  32.     }  
  33.     //由于是数字变了才输出,所以要用以下两行输出最后一个s0或s1。   
  34.     if(s1) cout<<s1;  
  35.     if(s0) cout<<s0;  
  36.     return 0;  
  37. }  
xcc

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: