1 条题解

  • 0
    @ 2024-2-4 15:21:56

    刚开始先判断当前牌堆是否已空,空的话输出,跳出循环。 具体实现是看当前牌堆顶指针是否已经指到len[k]处。

    if (p[k] == len[k]) {
    	printf("%c\n", k + 'A');
    	break;
    }
    

    倘若非空的话,把k指向当前牌堆顶的字母所指的牌堆,同时当前牌堆顶指针后移一位。

    k = s[k][p[k]++] - 'a';
    

    AC Code

    #include <iostream>
    #include <cstdio>
    #include <string>
    using namespace std;
    
    string s[3];
    int p[3];
    int len[3];
    int k = 0;
    
    int main() {
         for (int i = 0; i < 3; ++i) cin >> s[i], len[i] = s[i].size();
         while (1) {
               if (p[k] == len[k]) {
               printf("%c\n", k + 'A');
               break;
               }
               k = s[k][p[k]++] - 'a';
         }
         return 0;
    }
    
    
    • 1

    [ABC045B] 3人でカードゲームイージー

    信息

    ID
    411
    时间
    2000ms
    内存
    256MiB
    难度
    3
    标签
    (无)
    递交数
    120
    已通过
    5
    上传者