Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么加了//后面的这个&& num_val[j] > temp, 就不正确了呢? 难道能找到比该数小又比它长的?

Posted by Aqyz at 2007-07-24 13:16:28 on Problem 2533
#include <iostream>
using namespace std;

int main()
{
	int N;
	int *num_val, *num_sum;
	int i;

	while(cin >> N)
			{
			num_val = new int[N];
			num_sum = new int[N];

			for(i = 0; i < N; i++)
					{
					scanf("%d", &num_val[i]);
					num_sum[i] = 1;//置一
					}

			int temp, max;

			for(i = 1; i < N; i++)
					{
					max = 0;	temp = 0;
					for(int j = i-1; j >= 0; j--)
							{
							if(num_val[j] < num_val[i] ) //&& num_val[j] > temp) ///////疑问!
									{
									if(num_sum[j] > max)
											{
											temp = num_val[j];//WA是用于标记的数
											max = num_sum[j];
											}
									}
							}
					num_sum[i] += max;//算出该数为结尾的最长子序列
					}
			max = 0;
			/*
			for(i = 0 ; i < N; i++)
					{
					cout << num_sum[i] << " ";
					}
			cout << endl;//观看
			*/

			for(i=0; i < N; i++)
					{
					if(num_sum[i] > max)
						max = num_sum[i];
					}//搜出最大的子序列数
			cout << max << endl;
			}

	delete[]num_val;
	delete[]num_sum;
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator