10878 - Decode the tape

题目:10878 - Decode the tape


解题思路:发现规律:‘|’之后的空格代表0,o代表1,组成一个二进制数,即为对应的字母的ASCALL码;


注意:如果开数值,数组的行数要够大,不要让数组越界;


#include<stdio.h>
#include<string.h>
#include<math.h>  


const int N = 15;
const int M = 10000;

char str[M][N];
int sum[M];
int i , len = 0;

void caculate () {
	int  j, k;
	for (i  = 0; i < len; i++) {
		for (j = 1; j < N; j++) {

			if (str[i][j] == 'o') {

				if (j >= 0 && j <= 5)
					k = 8 - j;
				else 
					k = 9 - j;
				sum[i] += (int)pow(2, k);	

			}
		}
	}
}
void init() {

		memset(sum, 0, sizeof(sum));
		memset(str, 0, sizeof(str));
		char s[N];
		gets(s);
	while( gets(str[len]) != NULL && str[len][0] != '_' ) {	
		len++;
	}
}

int main() {

	init();
	caculate();
	for (i = 0; i < len; i++)	
		printf("%c",sum[i]);
	return 0;
}


你可能感兴趣的:(10878 - Decode the tape)