密室逃生游戏【C语言】

/*
【字符串 逻辑分析】
小强在参加《密室逃生》游戏,当前关卡要求找到符合给定密码K(升序的不重复小写字母组成)的箱子,并给出箱子编号,箱子编号为1~N。
每个箱子中都有一个字符串s,字符串由大写字母、小写字母、数字、标点符号、空格组成,
需要在这些字符串中找到所有的字母,忽略大小写后排列出对应的密码串儿,并返回匹配密码的箱子序号。
提示:满足条件的箱子不超过1个
输入描述
第一行为key的字符串,
第二行为箱子boxes,为数组样式,以空格分隔箱子
N数量满足1≤N≤10000,
s长度满足0≤s.length≤50,
密码为仅包含小写字母的升序字符串,且不存在重复字母,密码K长度K.length,1<K.length≤26
输出描述
返回对应箱子编号
如不存在符合要求的密码箱,则返回-1
示例一
输入
abc
sdf134 A2c4b
输出
2说明
第2个箱子中的Abc,符合密码abc
示例二
输入
abc
sdf134 A2c4bd 523[]
abc
sdf134 A2c4bf 523[]
cdf
sdf134 A2c4df 523[]
输出
-1
说明
第2个箱子中的Abcd,与密码不完全匹配,不符合要求
备注
箱子中字符拼出的字符串与密码的匹配忽略大小写,且要求与密码完全匹配,如密码abc匹配aBc,但是密码abc不匹配abcd
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MIN(a, b) ((a) < (b)) ? (a) : (b)
#define MAX(a, b) ((a) > (b)) ? (a) : (b)
 
int main () {

    char keys[1000];
    //fgets(keys, 1000, stdin);//这里的keys里包含\n,长度要+1
    scanf("%s",keys);
    getchar();

    char input_str[10000];
    fgets(input_str, 10000, stdin);
    char* single_ops[1000]; 
    int count = 0;
 
    char* token = strtok(input_str, " ");
    while (token != NULL) {
        single_ops[count++] = token;
        token = strtok(NULL, " ");
    }
 
    int result = -1;
    
    for (int i = 0; i < count; ++i) {
        int chars[256] = {0};
        
        for (int j = 0; j < strlen(single_ops[i]); j++) {
            char c = single_ops[i][j];
            if (c>='a'&&c<='z'){
                chars[c]++;
            }
            if (c>='A'&&c<='Z'){
                chars[c-'A'+'a']++;//A:65 Z:90 a:97 z:122
            }
        }

        //对比chars里是否包含了keys
        int flag = 0;
        for (int j = 0; j < strlen(keys); j++){
            if (chars[keys[j]] != 1) {
                flag = 1;
                break;
            }
            
        }

        //对示例二而言,仅仅对比chars里是否有abc是不够的
        //还要看内部是否有除abc以外的字母,若有其他字母,比如abcd,abcf都不行
        for( int j = keys[strlen(keys) - 1] + 1; j <= 'z'; j++){//比对c右边元素,即d ~ z
            if (chars[j] == 1) {
                flag = 1;
                break;
            }
        }
        for( int j = keys[0] - 1; j >= 'a'; j--){//比对a左边元素,因为keys最左边就是a,所以不会进入循环 
            if (chars[j] == 1) {
                flag = 1;
                break;
            }
        }
            
        if(flag == 0){
            result = i + 1;
            break;
        }
    }

    printf("%d",result);
 
    return 0;
 
}  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript密室逃生是一种基于Web技术的益智游戏,玩家需要在虚拟的密室中找到线索,解开谜题,最终逃离密室。以下是一个300字的回答。 在JavaScript密室逃生游戏中,玩家置身于一个虚拟的密室中,被困在其中,唯一的目标就是找到线索和解谜以逃离这个密室。这个游戏中使用了JavaScript编程语言,是基于Web技术实现的。玩家需要通过与密室内的不同元素进行交互,来发现隐藏的线索或者道具。 首先,玩家需要仔细观察密室的各个角落,寻找可疑的地方或物品。这可能包括墙壁上的画,桌子上的文件,甚至是地板上的纸片。在这些隐藏的地方,可能会找到与解谜相关的密码、数字或者提示。这些线索一般会以文本、图像或者其他形式展示出来。 得到线索后,玩家需要运用逻辑推理的能力来解开谜题。这可能需要玩家对密室中一些特殊的物品或者符号进行分析,并将其与之前获得的线索进行关联。例如,一把钥匙可能与某个柜子或门锁匹配,一串数字可能是解开某个密码的关键。 除了逻辑推理,玩家还可能需要运用一些基本的编程知识和技巧。在某些情况下,玩家可能需要修改或者编写一些JavaScript代码来解决难题。例如,通过代码改变某个元素的属性或者触发某个事件以解开机关。 通过不断地观察,探索和尝试,玩家最终可以找到真正的出口,并成功逃离密室。这个过程需要玩家的观察力、逻辑思维、编程能力和耐心。随着游戏的进行,玩家可能会面临越来越复杂的谜题挑战,因此,这个游戏也可以帮助玩家培养解决问题和团队合作的能力。 总之,JavaScript密室逃生是一个富有挑战性和乐趣的益智游戏。通过与虚拟的密室进行互动,玩家可以锻炼自己的观察力、逻辑推理和编程能力,同时也能欣赏到游戏设计师所创造的精心设计。 ### 回答2: JavaScript密室逃生是一个基于Web的逃生游戏,玩家需要运用JavaScript编程知识解决一系列难题,成功逃离密室。 在游戏中,玩家将置身于一个虚拟的密室中,需要寻找线索、解开谜题、找到隐藏的钥匙等,最终打开门离开房间。在这个过程中,玩家需要利用JavaScript编程语言的特性来实现互动和解谜。 首先,玩家需要了解和运用JavaScript的基本语法、变量、运算符和控制流程等。通过编写代码,可以展示隐藏的物品、触发事件,比如按下某个按钮会出现新的线索或打开隐藏的柜子。 其次,玩家可以利用JavaScript的DOM操作来改变网页元素的属性和样式,以便寻找和获取关键的提示信息。例如,通过改变某个元素的位置、隐藏或显示某个按钮等,来揭示隐藏的谜题答案或是寻找钥匙。 此外,玩家还可以利用JavaScript的事件处理器来监听用户的动作和操作,实现互动和触发相应的功能。例如,检测玩家鼠标点击事件,当玩家点击某个按钮或物品时触发相应事件,打开门或解锁某个装置。 总的来说,JavaScript密室逃生是一款结合了编程技巧和解谜元素的游戏。通过熟练运用JavaScript编程语言的各种特性,玩家可以通过解谜和互动的方式最终成功逃离密室。这不仅考验了玩家对JavaScript的熟练程度,还提高了逻辑思维、解决问题的能力。 ### 回答3: JavaScript密室逃生是一种基于JavaScript编程语言的解谜游戏,玩家需要在限定的时间内找到线索、解开谜题,最终逃离密室。 在游戏开始时,玩家将被锁在一个虚拟的密室内,需要通过与密室内的物品、地点进行交互,找到隐藏的线索和道具。玩家可以通过点击鼠标或键盘操作与游戏界面进行互动。 在这个游戏中,玩家需要利用JavaScript编程语言的特点,运用一些常用的方法和函数来解决谜题。例如,通过查看代码、调试程序、修改变量的值等方式来寻找线索,实现游戏中的各种任务。 游戏难度逐渐增加,玩家需要具备一定的编程基础和逻辑思维能力。而且,玩家在游戏中需要灵活运用编程知识,想出各种创新的解决方案,来解开谜题并逃离密室。 JavaScript密室逃生游戏不仅仅是一种娱乐方式,同时也是一种让人们更加熟悉和掌握JavaScript编程语言的途径。通过这个游戏,玩家能够在娱乐的同时提升自己的编程技巧和解决问题的能力。 总之,JavaScript密室逃生是一种结合编程与解谜的创新游戏,具有一定的娱乐性和教育意义,适合有一定编程基础的人群尝试挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值