在一个古堡的大门上有5行字符。其中隐藏着打开大门的密码。密码共有4位数字(0到9)。小明发现了一种找密码的方法:最后一行中的字符在第一行字符中出现的总次数是密码的第一个数字,依此类推。输入数据保证每行得到的数字在0到9之间
#include <stdio.h>
#include <stdlib.h>
#define N 100
#define M 5
int decode(char**s);
int main()
{
char *s[M];
int i;
int key;
for(i=0; i<M; i++){
s[i] = (char *)malloc((N+1)*sizeof(char));
gets(s[i]);
}
key = decode(s);
printf("%04d",key);
for(i=0; i<M; i++){
free(s[i]);
}
return 0;
}
/* 您提交的代码将放置在这里 */
int a[200]判断每个字符是否出现过,用1表示出现过,0则是没有,在某些需要判断次数的场合,可以用出现就a[op]++表示出现次数
int decode(char**s){
int a[200]={0},i=0,pin[4]={0};
while(s[4][i]){
a[s[4][i]]=1;
i++;
}
for(int j=0;j<4;j++){
i=0;
while(s[j][i]){
if(a[s[j][i]])pin[j]++;
i++;
}
}
int res=0;
for(int k=0;k<4;k++)res=res*10+pin[k];
return res;
}
注意还要转化为整数再返回