yqslovelwb1314

          常用鏈接

          統計

          最新評論

          荷蘭國旗問題(C++)

          問題描述:
          3種顏色在一個數組里,每次只可交換一次,掃描一次后,三種顏色自然分開,應為顏色為:紅,白,藍,(荷蘭國旗的顏色)所也叫荷蘭國旗問題
          
          //核心思路:統計出各種顏色的”國旗“的數量,然后按照指定順序顯示
          代碼實現:
                  #include<iostream>
                  using namespace std;
                  void sortHL(int* a,int n) {
              int j=0,k=0,i;//i為數組下標,j記錄有紅色塊數,k記錄藍色塊數
                      for(i=0;i<n;i++) {
                   if(a[i]==1)//藍色
                       j++;
                   if(a[i]==2)//紅色
                       k++;
                    }
                  //按規定的順序排好
                   for(i=0;i<=k-1;i++)//前k塊為紅色
                   a[i]=2;
                   for(i=k;i<=n-j;i++)//中間是白色
                   a[i]=0;
                   for(i=n-j;i<=n-1;i++)//后j塊是藍色
                   a[i]=1;
              }
               int main() {
          int a[]={1,2,0,1,2,0,1,2,1,0,2};//原數組
                   int n=sizeof(a)/sizeof(int);//數組長度
                   for(int i=0;i<n;i++)
              cout<<a[i]; //輸出原來的數組
                   cout<<endl;
                   sortHL(a,n);
                  for(i=0;i<n;i++)
              cout<<a[i];//輸出排好的“國旗”
                  cout<<endl;
                   return 0;
          }

          posted on 2012-05-20 19:52 要是不用分離,多好 閱讀(759) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 定南县| 明星| 安顺市| 临安市| 湖南省| 柘城县| 肇源县| 阳西县| 安顺市| 马公市| 宁德市| 宣汉县| 额敏县| 泗阳县| 舟山市| 平阴县| 南城县| 寻乌县| 卢湾区| 板桥市| 香河县| 安平县| 涟水县| 伊金霍洛旗| 泸水县| 饶平县| 淳安县| 中江县| 涟水县| 长宁县| 灌云县| 崇州市| 巴里| 禹州市| 石嘴山市| 新密市| 容城县| 长汀县| 南宁市| 南丹县| 师宗县|