네덜란드 깃발 문제 (C 언어 실현)
1519 단어 계산법 의 길네덜란드 깃발 문제고전 알고리즘
// ,
// 、 、 ,
// , ,
// ,
#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 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
알고리즘 의 길2. 정렬 선택정렬 법 을 선택 하 는 것 은 사실상 포 지 셔 닝 비교 교환 법 (즉 거품 정렬 법) 에 대한 개선 이다. 기본 사상: 첫 번 째, 정렬 대기 기록 r [1] ~ r [n] 에서 가장 작은 기록 을 선택 하여 r...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.