今天突然想到一个问题,有时候,针对同一个事件有多种反映,特别是游戏AI当中,这种情况下需要采取最适合的方案,哪种方案最适合,可以将每种方案的结果或影响都计算一遍,从而选择最合适的。最基本就是一个排列组合方法,将各种方案都组合出来。于是写了一个基本的N个数排列组合小程序!

开发工具:Visual Studio 2012

CTestPermutation::~CTestPermutation()
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>CTestPermutation::~CTestPermutation()"<<endl;
} void CTestPermutation::DoTest()
{
cout<<"-------将N个数进行排列组合-------"<<endl<<endl;
vector<int> vecNums,vecPermutated;
cout<<"示例数据:";
for(int i = ; i < ;i++)
{
vecNums.push_back(i);
cout<<i<<" ";
}
cout<<endl;
cout<<"排列组合结果:"<<endl;
Permutation(vecPermutated,vecNums); } /******************************************************
@ FunctionNmae: Permutation
@ Function: 将N个数进行排列组合
@ vecPermutated: 已经排列好的数列
@ vecWaitPermuta: 待排列的数
********************************************************/ void CTestPermutation::Permutation(vector<int> vecPermutated,vector<int> vecWaitPermuta)
{
if(vecWaitPermuta.size() > )
{
for(vector<int>::iterator itNum = vecWaitPermuta.begin();itNum != vecWaitPermuta.end();++itNum)
{
vector<int> vecPermutatedTmp = vecPermutated;
vecPermutatedTmp.push_back(*itNum); vector<int> vecWaitPermutaTmp = vecWaitPermuta;
//删除当前已经加入排列完毕的元素
vector<int>::iterator retFind = find(vecWaitPermutaTmp.begin(),vecWaitPermutaTmp.end(),*itNum);
if(vecWaitPermutaTmp.end() != retFind)
{
vecWaitPermutaTmp.erase(retFind);
}
//继续递归调用排列算法
Permutation(vecPermutatedTmp,vecWaitPermutaTmp);
}
}
else //一组排列完毕
{
//打印排列结果
cout<<"\t";
for(int i = ; i < vecPermutated.size();++i)
{
cout<<vecPermutated.at(i)<<" ";
}
cout<<endl;
}
}

执行结果:

C++写一个排列组合小程序的更多相关文章

  1. Python3的tkinter写一个简单的小程序

    一.这个学期开始学习python,但是看了python2和python3,最后还是选择了python3 本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度.所以写了一个简 ...

  2. 用 python 写一个年会抽奖小程序

    使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...

  3. 一个python爬虫小程序

    起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...

  4. 微信小程序-从零开始制作一个跑步微信小程序

    来源:伯乐在线 - 王小树 链接:http://ios.jobbole.com/90603/ 点击 → 申请加入伯乐在线专栏作者 一.准备工作 1.注册一个小程序账号,得用一个没注册过公众号的邮箱注册 ...

  5. 两周撸一个掘金微信小程序

    利益相关 无 声明 这并不是掘金官方小程序(貌似没有搜到掘金 APP 对应的官方小程序),完全为第三者开发者开发,仅用于学习交流,禁止用于其他用途.若要使用官方正版,可访问掘金 官方网站,或下载掘金官 ...

  6. 3.2 Lucene实战:一个简单的小程序

    在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...

  7. 如何用 Python 写一个简易的抽奖程序

    不知道有多少人是被这个头图骗进来的:) 事情的起因是这样的,上周有同学问小编,看着小编的示例代码敲代码,感觉自己也会写了,如果不看的话,七七八八可能也写的出来,但是一旦自己独立写一段程序,感觉到无从下 ...

  8. 人人都可以写的可视化Python小程序第二篇:旋转的烟花

    兴趣是最好的老师 枯燥的编程容易让人放弃,兴趣才是最好的老师.无论孩子还是大人,只有发现这件事情真的有趣,我们才会非常执着的去做这件事,比如打游戏.如果编程能像玩游戏一样变得有趣,我相信很多人就特别愿 ...

  9. Python写一个自动点餐程序

    Python写一个自动点餐程序 为什么要写这个 公司现在用meican作为点餐渠道,每天规定的时间是早7:00-9:40点餐,有时候我经常容易忘记,或者是在地铁/公交上没办法点餐,所以总是没饭吃,只有 ...

随机推荐

  1. hdu3681--Prison Break(TSP+二分)

    好难的一道题. 题意:一个机器人要逃出监狱,每走一步消耗一点电量,初始时电量是满的.给一个n*m(n,m<=15)的字符数组代表监狱,F代表起始点,G代表补充满电量,每个G只能补充一次,Y代表开 ...

  2. 安装 Linux 与 Windows 10 双系统,你需要了解的一切

    该选Windows 10还是Linux Mint?鱼与熊掌当然可以兼得,但咱们得掌握点小技巧才能顺利搞定. Windows 10绝不是唯一一款值得我们安装在自己计算机之上的免费操作系统.Linux只靠 ...

  3. win8 64位系统,安装JDK的步骤及其环境配置

    工具/原料 jdk-8u51-windows-x64.exe 下载地址:::http://www.cr173.com/soft/55503.html#address jdk 安装步骤 1:到oracl ...

  4. Nginx代码调试——gdb工具

    参考网上的资料,写了一个configprint模块,其功能为打印输出location配置内容,并计数访问次数. 代码链接如下:https://github.com/PaulWeiHan/nginx_m ...

  5. SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存

    背景 声明,如果你不关心java缓存解决方案的全貌,只是急着解决问题,请略过背景部分. 在互联网应用中,由于并发量比传统的企业级应用会高出很多,所以处理大并发的问题就显得尤为重要.在硬件资源一定的情况 ...

  6. Web版的各种聊天工具

    直到近期为止,我们经常使用的即时聊天工具(QQ.msn等)了Web版,大家不用下载庞大软件,直接打开网页就能够与自己的好友聊天,非常方便.在此将时汇总        便于大家查找        节约大 ...

  7. mydumper工作原理 :myownstars专家

    http://blog.itpub.net/15480802/viewspace-1465080/

  8. careercup-递归和动态规划 9.7

    9.7 编写函数,实现许多图片编辑软件都支持的“填充颜色”功能.给定一个屏幕(以二维数组表示,元素为颜色值).一个点和一个新的颜色值,将新颜色值填入这个点的周围区域,直到原来的颜色值全部改变. 类似l ...

  9. 一款很不错的FLASH时种插件

    直接贴一段代码上来,大家看看效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  10. L2TP

    点击查看详情>>   我的贡献 |退出 L2TP 编辑词条 L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密.不过也有不同之处 ...