2-Color Dutch National Flag Problem

问题

a[0..n-1]中包含红元素或蓝元素;重新放置使得 红元素均在蓝元素之前。

循环不变式

每一次循环,a[0...k-1]是红色

实例代码

#include <iostream>
#include <vector> using namespace std; class Solution {
public:
//将仅包含1,2组成的数组用循环不变式的方式将数组转换成2在前面,1在后面。
void loop_variant(vector<int>& vec) {
int k = 0;
int m = 0;
while(m < vec.size()) {
if (vec[m] == 2) {
int tmp;
tmp = vec[k];
vec[k] = vec[m];
vec[m] = tmp;
k++; //每一次循环k以前的都是2
}
m++;
}
}
}; int main() {
int arr[] = {1, 2, 1, 1, 1, 2, 2, 2, 1, 1};
vector<int> vec(arr, arr+10);
Solution* solution = new Solution();
solution->loop_variant(vec);
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
cout << endl; return 0;
}

最新文章

  1. python注释、脚本参数、字节码
  2. 你们信不信一句Console.WriteLine就能让你的控制台程序失去响应
  3. Oracle 查询性能优化实践
  4. HTML DOM Document
  5. CentOS 6.6 nginx PHP 配置
  6. python字符串关键点总结
  7. HDOJ 4745 Two Rabbits DP
  8. js获取json的value
  9. Laravel Cache 使用
  10. cygwin的安装,vi的使用,gcc,g++的使用(转)
  11. 数据结构(Java描述)之二叉树
  12. 【新建项目&amp;使用viewPager】实现一个Android电子书阅读APP
  13. extern “ C”的含义
  14. mac下CSV文件用FileReader、FileWriter读写乱码
  15. Oracle update 执行更新操作后的数据恢复
  16. ES6新特性概述
  17. MySQL的一些基本命令笔记(1)
  18. C#语言————选择结构
  19. Windows10下Docker监控管理工具:Hyper-V管理器
  20. 【Important】数据库索引原理

热门文章

  1. hdu2732 (Leapin&#39; Lizards)
  2. java的static final和final的区别
  3. 02、微信小程序的数据绑定
  4. 【sed / awk脚本编写】
  5. 【转】HTTP缓存机制
  6. Python基础教程-Dict和Set
  7. Angular学习笔记—创建一个angular项目
  8. JVM虚拟机—JVM内存
  9. getElementsByClassName - 兼容详细介绍
  10. pyton全栈开发从入门到放弃之数据类型与变量