楚寻欢 2021-11-16 09:47 采纳率: 33.3%
浏览 47
已结题

如何利用桶排标记字符

H. 分心的岩宝
解法

由题意得,岩宝做的同一任务不能分开做,即之前做过的任务不能在后面出现,所以只需要判断是否重复出现做同一任务的情况即可

当我们遇到一串连续的字母时,continue,直到有ch[i]!=ch[i+1]的情况,用桶排标记这个字母,然后去判断这个字母在后面是否出现,for枚举一次,即可输出最后的结果。
标程


#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
char ch[60];
int f[27];
int main() {
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        cin >> ch;
        int flag = 1;
        memset(f, 0, sizeof(f));
        for (int i = 0; i < n; i++) {
            if (ch[i] == ch[i + 1])
                continue;
            else {
                if (f[ch[i] - 'A'] == 1) {
                    flag = 0;
                    break;
                } else
                    f[ch[i] - 'A'] = 1;
            }
        }
        if (flag)
            puts("Yes");
        else
            puts("No");
    }

请问这里面的f(ch[i]-'A']=1是什么意思

  • 写回答

2条回答 默认 最新

  • CSDN专家-文盲老顾 2021-11-16 09:52
    关注

    f 是个整型数组, ch 是个字节数组,'A' 是一个字节

    ch[i] - 'A' 即两个字节相减,得出的数字作为下标,获取 f 数组中对应的项,然后给该项赋值为1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 创建了问题 11月16日

悬赏问题

  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)