FOJ 1067 Running Length Code

很简单的一个问题,但是由于最开始题目看不懂。。。。弄了好久。。

就是要让你统计连续0 1的个数,然后和它的值(比如0,值就为0,1,值就为1)

组成一个byte

也就是比如0 0 0 0 0 0 0

那么存在有7个0,组成的byte值就是00000111

又比如1 1组成的byte值就是10000010

化成10进制就是所得的数。

还要注意Suppose that the length of any continuous part in a binary string is less than 128

如果大于127,那么就要重新计数。

 

#include <stdio.h> int main() { int arr[1001]; int n,i,j,m; int count; while (scanf("%d", &n)!=EOF,n!=0) { for (i=0;i<n;i++) scanf("%d", &arr[i]); count = 1; for (i=1;i<n;i++) { if (count==127) { printf("%d ",(arr[i-1]<<7)+count); count = 1; continue; } if (arr[i]==arr[i-1]) { count++; continue; } else { printf("%d ",(arr[i-1]<<7)+count); count=1; } } printf("%d",(arr[i-1]<<7)+count); printf("/n"); } return 0; }

你可能感兴趣的:(String,less,ini,byte)