三色旗(c/python)

来源:互联网 发布:河北盘古网络怎么样 编辑:程序博客网 时间:2024/04/30 10:38

三色旗

对绳子上的三种颜色的旗子进行(蓝,白,红)排序
这里写图片描述

一开始b,w指向0索引,r指向最后一个索引
1 如果w指向蓝色 则交换b和w指向的值,同时,b,w加1
2 如果w指向白色,则w加1
3如果w指向红色 ,则交换w,r指向的值,同时r-1

C代码

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define Blue 'b'#define White 'w'#define Red 'r'void swap(int x, int y,char color[]){    char temp;    temp = color[x];    color[x] = color[y];    color[y] = temp;    }int main(){    char color[] = { 'r','w','b','w','w','b','r','b','\0' };    int b_flag = 0;    int w_flag = 0;    int r_flag = strlen(color) - 1;    for (int i = 0; i < strlen(color); i++)    {        printf("%c",color[i]);    }    printf("\n");    while (w_flag <= r_flag)    {        if (color[w_flag] == White)        {            w_flag++;        }        else if (color[w_flag] == Blue)        {            swap(w_flag, b_flag,color);            w_flag++;            b_flag++;        }        if (color[w_flag] == Red)        {            swap(w_flag, r_flag, color);            r_flag--;        }    }    for (int i = 0; i < strlen(color); i++)    {        printf("%c", color[i]);    }    system("pause");}

python代码

# -*- coding: utf-8 -*-"""Created on Sat Nov  4 20:22:59 2017@author: yangwenbin"""def swap(x,y):    x,y=y,x    return y,xdef main():    color=['Red','Red','Blue','White','White','Red','Blue']    r_flag=len(color)-1    b_flag=0    w_flag=0    while w_flag<=r_flag:        if color[w_flag]=='Blue':            #color[w_flag],color[b_flag]=color[b_flag],color[w_flag]  等价于下面            color[b_flag],color[w_flag]=swap(color[w_flag],color[b_flag])#第一种            w_flag+=1            b_flag+=1            pass        elif color[w_flag]=='White':            w_flag+=1            pass        elif color[w_flag]=='Red':            color[w_flag],color[r_flag]=color[r_flag],color[w_flag]#第二种            r_flag-=1            pass        pass    print (color)main()
原创粉丝点击