三色旗(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()
阅读全文
0 0
- 三色旗(c/python)
- 简单三色塔(c/python略)
- 三色旗算法及其C程序
- 三色旗算法(C描述)
- 三色旗
- 三色旗
- 三色旗
- 三色旗
- 三色旗
- 三色旗
- 从算法学起C语言--三色旗问题
- 三色旗问题
- 三色旗问题
- 趣味算法-三色旗
- 三色旗问题
- 三色旗排序问题
- 三色旗排序问题
- 三色旗问题
- shouji
- 动态代理
- centos6.5安装hadoop集群过程及遇到的问题
- Retrofit 请求
- 不通的路径Ⅱ
- 三色旗(c/python)
- 手写轮播
- 读取进度加载二维码
- RxJava+Retrofit 简单理解实现
- Java super隐式参数
- 动态规划DP_最长上升子序列LIS
- Linux如何安装JAVA的JDK?
- Xargs用法详解
- demo