동적 기획 서열 중 가장 긴 비강하 서열
1883 단어 필기시험
// maxnodecrease.cpp : 。
//
#include "stdafx.h"
#include<vector>
#include<iostream>
using namespace std;
vector<int>maxnodecrease(int* input, int len, int startnumpos);
int findnext(int *in, int len, int numpos);
int findnew(int*in, int len, int firstnumpos, int secnumpos);
int _tmain(int argc, _TCHAR* argv[])
{
const int len = 10;
int a[len] = { 5, 2, 6, 4, 1, 1, 1, 6, 10, 9 };
//int a[len] = { 2, 9, 3, 4, 5 };
vector<int>::iterator it;
vector<int>bb,cc;
int maxlen = 0;
for (int i = 0; i < len - 1; i++)
{
bb=maxnodecrease(a, len, i);
if (bb.size()>maxlen)
{
maxlen = bb.size();
cc = bb;
}
}
for (it = cc.begin(); it != cc.end(); it++)
cout << *it << endl;
system("pause");
return 0;
}
vector<int>maxnodecrease(int* input, int len,int startnumpos)
{
vector<int>aa;
aa.push_back(input[startnumpos]);
int kk = findnext(input, len, startnumpos);
int a = kk;
while (kk)
{
aa.push_back(input[kk]);
kk = findnext(input, len, kk);
}
int maxlen = aa.size();
while(a)
{
a = findnew(input, len, startnumpos, a);
if (a)
{
vector<int>cc;
cc.push_back(input[startnumpos]);
int bb = a;
while (bb)
{
cc.push_back(input[bb]);
bb = findnext(input, len, bb);
}
if (cc.size() > maxlen)
{
aa.clear();
aa=cc;
}
}
}
return aa;
}
int findnext(int *in,int len, int numpos)
{
int a = in[numpos];
for (int i = numpos+1; i < len; i++)
{
if (in[i] >= a)
return i;
}
return 0;
}
int findnew(int*in, int len,int firstnumpos, int secnumpos)
{
for (int i = secnumpos + 1; i < len; i++)
{
if (in[i]>in[firstnumpos] && in[i] < in[secnumpos])
return i;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무 중 두 노드의 가장 가까운 공공 조상을 찾다제목: 두 갈래 나무 중 두 노드의 가장 가까운 공공 조상을 찾아 되돌려 달라고 한다. 알고리즘 사상: 이 문제의 관건은 모든 노드에 부모 노드를 가리키는 바늘을 포함하는 데 있다. 이로써 프로그램은 간단한 알고리즘...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.