네덜란드 깃발 문제 (C 언어 실현)

//     ,       
//          、  、     ,           
//                   ,        ,             
//              ,            

#include 
#define MAX_FLAG 30
#define BLUE 'B'
#define WHITE 'W'
#define RED 'R'




//           ,      ,      ,      
void DutchFlag(int n,char flagArr[MAX_FLAG])
{
	int rflag=n-1,bflag=0,wflag=0;//         ,   .wflag           
	while (wflag<=rflag)
	{
		if (flagArr[wflag]==WHITE)//   ,        
		{
			++wflag;
		}
		else if(flagArr[wflag]==BLUE)//   ,        
		{
			char temp = flagArr[wflag];
			flagArr[wflag] = flagArr[bflag];
			flagArr[bflag] = temp;
			++bflag;//bflag    ,           
			++wflag;//        ,wflag-bflag     ,wflag       
		}
		else
		{	//    wflag     ,   rflag            。          ,    rflag  
			//   else      wflag,      rflag      ,           
			//   wflag       ,  flagArr[wflag]    
			while (wflag

가능 한 한 주석 을 상세 하 게 써 서 이해 하 는 것 은 어렵 지 않 을 것 이다.
이 전형 적 인 문 제 를 이해 하면 색채 의 추진 이 라 고 상상 할 수 있다. 먼저 빨 간 줄 을 밀고 흰 줄 을 밀고 마지막 에 파란색 줄 을 밀 었 다.
July 대신 의 네덜란드 기 문장 첨부 (http://blog.csdn.net/v_july_v/article/details/18824517) 훔 쳐 온 그림 ~ QWQ 이 그림 은 빨간색 과 흰색, 파란색, 빨간색 입 니 다.
여기 Begin, Current, End 에 대응 하 는 것 은 바로 제 가 위 에 쓴 bFlag, wFlag, rFlag 입 니 다.
    

좋은 웹페이지 즐겨찾기