三色旗问题

来源:互联网 发布:网络数字用语 编辑:程序博客网 时间:2024/04/25 14:22

 

 

 

#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;
}

原创粉丝点击