演算法提高 聰明的美食家

一名路過的小碼農啊發表於2017-03-12
 演算法提高 聰明的美食家  
時間限制:1.0s   記憶體限制:256.0MB
    
問題描述
  如果有人認為吃東西只需要嘴巴,那就錯了。
  都知道舌頭有這麼一個特性,“由簡入奢易,由奢如簡難”(據好事者考究,此規律也適合許多其他情況)。具體而言,如果是甜食,當你吃的食物不如前面剛吃過的東西甜,就很不爽了。
  大寶是一個聰明的美食家,當然深諳此道。一次他來到某小吃一條街,準備從街的一頭吃到另一頭。為了吃得爽,他大費周章,得到了各種食物的“美味度”。他拒絕不爽的經歷,不走回頭路而且還要爽歪歪(爽的次數儘量多)。
輸入格式
  兩行資料。
  第一行為一個整數n,表示小吃街上小吃的數量
  第二行為n個整數,分別表示n種食物的“美味度”
輸出格式
  一個整數,表示吃得爽的次數
樣例輸入
10
3 18 7 14 10 12 23 41 16 24
樣例輸出
6
資料規模和約定
  美味度為0到100的整數
  n<1000
 
#include<iostream>
#include<algorithm>
using namespace std;
int a[2000];int b[2000];
int main()
{
	int n;
	cin>>n;
	int ans=1;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		b[i]=0;
	}
	for(int i=0;i<n;i++)
	{
		int maxvalue=0;
		for(int j=i-1;j>=0;j--)
		{
			if(a[j]<=a[i])
			{
				maxvalue=max(maxvalue,b[j]);
			}
		}
		b[i]=maxvalue+1;
		ans=max(ans,b[i]);
	}
	cout<<ans<<endl;
	return 0;
} 
最長不降子序列,b[i]返回的是前面不降子序列中的最大值+1

相關文章