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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 镇沅| 涡阳县| 鄂尔多斯市| 承德县| 兰溪市| 瑞安市| 鄂托克前旗| 高台县| 宜宾市| 宽城| 长乐市| 白水县| 丰城市| 郑州市| 阿克陶县| 林口县| 进贤县| 祁东县| 汝城县| 龙门县| 余姚市| 阜平县| 平塘县| 荣昌县| 平湖市| 天祝| 祁阳县| 康保县| 玉溪市| 密山市| 江城| 吉安市| 额敏县| 常德市| 中西区| 武冈市| 西林县| 琼中| 青浦区| 松阳县| 天等县|