vc 排序函数 50分求助,5555

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:04:55
要求用C++语言编程,在Visual C++环境下调试完成;
三、设计方法和基本原理
1. 课题功能描述
任意给定5个数字,其中必定存在3个数字已经有序(或者升序,或者降序),找出这5个数字中最长的升序或降序序列。
例如:1,7,5,3,9。则{1,7,9},{1,5,9},{1,3,9}都是最长的升序序列;
而{7,5,3}是最长的降序序列。
再如:1,3,2,5,7。最长的升序序列为{1,3,5,7}和{1,2,5,7}。
2. 问题的解决方案:
自动生成各种可能的序列,对于5个数字所有可能的序列为:
{0,1,2,3}、{0,1,2,4}、{0,1,3,4}、{0,2,3,4}、{1,2,3,4}
{0,1,2}、{0,1,3}、{0,2,3}、{1,2,3}
{0,1,4}、{0,2,4}、{1,2,4}
{1,3,4}
{2,3,4}、{0,3,4}
考察各种可能的序列是否升序或是降序,若是则打印

// OrderNumber.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

#define MAX_NUM 5

int main(int argc, char* argv[])
{
//你在这里改写你需要的数字,下面的1,3,2,5,7只是举例
int iNumArr[MAX_NUM]={1,3,2,5,7};
vector< vector<int> > vcUp;
vector< vector<int> > vcDown;
vector< int > vcTmp;
vector< vector<int> >::iterator vitVecInt;
vector< int >::iterator vitInt;
int i,j,k,iCurrent,iMaxUp,iMaxDown;

iMaxUp = iMaxDown =0;
//获取升序队列
for (k=1;k<MAX_NUM;k++)
{
for (i=0;i<MAX_NUM-1;i++)
{
vcTmp.clear();
iCurrent = iNumArr[i];
vcTmp.push_back(iNumArr[i]);
for (j=i+k;j<MAX_NUM;j++)
{
if (iCurrent < iNumArr[j])
{
iCurrent = iNumArr[j];