三色旗问题

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BLUE 'b'
#define WHITE 'w'
#define RED 'r'
//这里是为了实现将一行写到多行实现宏定义的要求(宏定义要求宏名用一串字符替换)
#define SWAP(x, y) { char temp;/    
                     temp = color[x];/
                     color[x] = color[y];/
                     color[y] = temp; }
                   
int main()
{
    char color[] = {'r', 'w', 'b', 'w', 'w',
                    'b', 'r', 'b', 'w', 'r', '/0'};
    int wFlag=0;
    int bFlag = 0;
    int rFlag=strlen(color);
    int i;
    for(i=0;i<strlen(color);i++)
        printf("%c ",color[i]);
    printf("/n");
    while(wFlag<=rFlag)
    {
        if(color[wFlag]==WHITE)
        {
            wFlag++;
        }
        else if(color[wFlag]==BLUE)
        {
            SWAP(wFlag,bFlag);
            wFlag++,bFlag++;
        }
        else
        {
            while(wFlag==rFlag && color[rFlag]==RED)
                rFlag--;
            SWAP(wFlag,rFlag);
            rFlag--;
        }
    }
    for(i=0;i<strlen(color);i++)
        printf("%c ",color[i]);
    printf("/n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值