6-3 找密码

该篇博客介绍了一个关于字符串处理的算法问题,涉及字符查找和计数。作者提出了一个解密方法,通过比较字符串间字符出现的次数来找出隐藏的4位数字密码。在给出的输入样例中,通过解析5行字符串,成功解码出密码4322。此问题主要考察编程中的字符串操作和逻辑推理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6-3 找密码

分数 10

全屏浏览题目

切换布局

作者 王从银

单位 浙江大学

在一个古堡的大门上有5行字符。其中隐藏着打开大门的密码。密码共有4位数字(0到9)。小明发现了一种找密码的方法:最后一行中的字符在第一行字符中出现的总次数是密码的第一个数字,依此类推。输入数据保证每行得到的数字在0到9之间。
请编写一个函数 decode帮助小明找出密码。

函数接口定义:

 

int decode(char**s);

通过参数s向函数传递5行字符串,函数返回密码值。

裁判测试程序样例:

 

#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 decode(char**s){
    int len,l;
    for(len=0;*(*(s + 4) + len) != '\0';len++);
    int i,j,k;
    int password[100];
    for(i = 0;i < 4;i++){
        int count = 0;
        for(l=0;*(*(s + i) + l) != '\0';l++);
        for(j = 0;j < len;j++){
            for(k = 0;k < l;k++){
                if(*(*(s + i) + k) == *(*(s + 4) + j)){
                    count++;
                }
            }
        }
        password[i] = count;
    }
    int p = 0;
    int mul = 1000;
    for(i = 0;i < 4;i++){
        p += password[i] * mul;
        mul /= 10;
    }
    return p;
}

 

输入样例:

1111
222
33
41
2341

输出样例:

4322
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值