1045. Favorite Color Stripe (30)
//按照普通的算法实现,居然超时还有错误,不明白啊???
//wrong answer
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
int m;
int l;
int color[205];
//vector<int> stripe;
int stripe[10005];
scanf("%d", &n);
scanf("%d", &m);
int i;
for (i=0;i<m;i++)
{
/*cin >> color[i];*/
scanf("%d", &color[i]);
}
scanf("%d", &l);
int tmp;
for (i = 0;i<l;i++)
{
//cin >> tmp;
scanf("%d", &stripe[i]);
}
int maxlength = 0;
int currlength = 0;
int BeforeMaxIndex = -1;
int CurIndex;
int tmpIndex;
int j;
for (i = 0;i<l;i++)
{
int* temp = find(color, color + m, stripe[i]);
CurIndex = temp - color;
if (CurIndex < 0 || CurIndex >= m)
{
continue;
}
if (CurIndex >= BeforeMaxIndex)
{
currlength++;
BeforeMaxIndex = CurIndex;
}
else
{
currlength++;
BeforeMaxIndex = CurIndex;
for (j = i-1;j>=0;j--)
{
temp = find(color, color+m, stripe[j]);
tmpIndex = temp - color;
if (tmpIndex < 0 || tmpIndex >= m)
{
continue;
}
if (tmpIndex > CurIndex)
{
currlength--;
}
}
}
if (currlength > maxlength )
{
maxlength = currlength;
}
}
printf("%d", maxlength);
return 0;
}
//1045. Favorite Color Stripe (30)
//accept
//动态规划!!!!
//注意前后之间到底关联性是什么 如何正确添加下一个值。。。。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
int m;
int l;
int color[205];
int stripe;
int num[205] = {0};
scanf("%d", &n);
scanf("%d", &m);
int i;
for (i=0;i<m;i++)
{
scanf("%d", &color[i]);
}
scanf("%d", &l);
int maxlength = 0;
int curLength = 0;
int j = 0;
int maxtmp = 0;
for (i = 0;i<l;i++)
{
scanf("%d", &stripe);
int* tmp = find(color, color+m, stripe);
int index = tmp - color;
if ( index < 0 || index >= m)
{
continue;
}
maxtmp = 0;
for (j = 0;j<=index;j++)
{
if (j == 0)
{
maxtmp = num[color[j]];
}
if (maxtmp < num[color[j]])
{
maxtmp = num[color[j]];
}
}
curLength = maxtmp + 1;
num[stripe] = curLength;
if (i == 0||curLength > maxlength)
{
maxlength = curLength;
}
curLength = 0;
}
printf("%d", maxlength);
return 0;
}
PAT 1045. Favorite Color Stripe (30)
最新推荐文章于 2021-08-28 21:22:55 发布