第15周项目-2-洗牌-使用STL的算法

来源:互联网 发布:vcr制作软件 编辑:程序博客网 时间:2024/05/20 22:40

问题及代码:

/* 
*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:张晴晴*完成日期:2016年6月16日*版本号:v1.0*问题描述:  在扑克牌游戏中,每次游戏开始都要求把54张牌重新排列一下,称为洗牌。    试编写程序将一副扑克牌(用54个整数1~54表示)随机洗好后,顺序输出54张牌的情况。*输入描述: 无*程序输出: 洗牌后的结果*/#include <ctime>//随机取数的头文件#include <vector>#include <iterator>#include <algorithm>//包含多种运算的头文件#include <iostream>using namespace std;int main(){    ostream_iterator <int>  os(cout," ");    srand(time(NULL));  // 洗牌前要先初始化随机数种子    vector <int> poker;//定义一个扑克变化的容器    for(int i=1; i<=54; i++)    {        poker.push_back(i);//在尾部加入数据后输出    }    cout<<"洗牌之前:"<<endl;    copy(poker.begin(),poker.end(),os);    cout<<endl;    random_shuffle(poker.begin(),poker.end());//打乱之前的排列顺序    cout<<"\n洗牌之后:"<<endl;    copy(poker.begin(),poker.end(),os);//输出现在的排列顺序    cout<<endl<<endl;    return 0;}   

运行结果:

 

学习心得:

random_shuffle()是个完全通用的算法-适用于内建的数据类型和用户自定义类型。用于打乱的排列顺序:

0 0
原创粉丝点击