算法(一)

/*

牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的。初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的。牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式。 
输入描述:
输入包括一个字符串S,字符串长度length(3 ≤ length ≤ 50),其中只包含'W'和'B'两种字符串,分别表示白色和黑色。整个字符串表示卡片序列的初始状态。


输出描述:
输出一个整数,表示牛牛最多需要翻转的次数。

输入例子1:
BBBW

输出例子1:
1

*/


#include<stdio.h>
int main(){

char a[50];
    int count = 0;
    scanf("%s",a);
    if(sizeof(a)/2<3 || sizeof(a)/2>50){
        printf("ERROR");
        return 0;
    }
    int i = 0;
    int wCount1 = 0;
    int wCount2 = 0;

    while (a[i] != '\0'){
        
        if (i % 2 == 0) {
            if (a[i] == 'W') {
                wCount1++;
            }
        } else {
            if (a[i] == 'W') {
                wCount2++;
            }
        }
        i++;
        
    }
    int wFlag = (wCount1 > wCount2 ? wCount1 : wCount2) > ((i - wCount1) > (i - wCount2) ? (i - wCount1) : (i - wCount2)) ? 1 : 0;
    int flag = 1;
    if (wFlag) {
        flag = wCount1 > wCount2 ? 1 : 0;
    } else {
        flag = (i - wCount1) > (i - wCount2) ? 1 : 0;
    }
    int j = 0;
    while (a[j] != '\0') {
        if (flag) {
            if (wFlag) {
                if (j % 2 == 0 && a[j] == 'B') {
                    count++;
                } else if (j % 2 != 0 && a[j] == 'W') {
                    count++;
                }
            } else {
                if (j % 2 == 0 && a[j] == 'W') {
                    count++;
                } else if (j % 2 != 0 && a[j] == 'B') {
                    count++;
                }
            }
        } else {
            if (wFlag) {
                if (j % 2 != 0 && a[j] == 'B') {
                    count++;
                } else if (j % 2 == 0 && a[j] == 'W') {
                    count++;
                }
            } else {
                if (j % 2 != 0 && a[j] == 'W') {
                    count++;
                } else if (j % 2 == 0 && a[j] == 'B') {
                    count++;
                }
            }
        }
        j++;
    }
    
    printf("%d",count);
return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容