编程介的小学生 2019-06-20 21:55 采纳率: 0.4%
浏览 257

计算整理纸牌使得每张纸牌都正面朝上的次数,怎么用C语言的程序的编写的代码设计的做法来实现的

Problem Description
有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌。但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近一张)也必须跟着翻动,现在给你一个乱的状态,问你能否把他们整理好,使得每张纸牌都正面朝上,如果可以,最少需要多少次操作。

Input
有多个case,每个case输入一行01符号串(长度不超过20),1表示反面朝上,0表示正面朝上。

Output
对于每组case,如果可以翻,输出最少需要翻动的次数,否则输出NO。

Sample Input
01
011

Sample Output
NO
1

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 11:59
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    #include <stdio.h>
    int main(){
        int i,j;
        char s[3];
        scanf("%s",s);
        for(i=0;i<strlen(s);i++){
            if(s[i]=='1'){
                printf("NO\n");
                return 0;
            }
        }
        for(j=0;j<strlen(s)-1;j++){
            if(s[j+1]==s[j]){
                for(i=j;i<j+2;i++){
                    if(s[i]==0){
                        s[i]='1';
                    }else{
                        s[i]='0';
                    }
                }
            }
        }
        for(i=0;i<strlen(s);i++){
            if(s[i]==0){
                printf("NO\n");
                return 0;
            }
        }
        puts(s);
        return 0;
    }
    
    评论

报告相同问题?