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

why wa???请牛人指教!谢谢!!!

Posted by hustzh at 2009-05-18 20:21:56 on Problem 1068
//我的思路:分析后找规律。
//a[i]中后一个跟前一个不一样则肯定结果为1。
//如果一样的话,则看这一系列的一样的最前面那个和他前一个的差是多少,到目前为止用完没有,再做决定当前这位的结果
//比如说4 6 6 6 6 8 9 9 9,第二个6和前面一位一样都是6,那么就看6-4=2,到这位时用完了没有,第一个6用了一个
//这个6还可以用最后一个。那么第三个6就不能用了,那么就算他跟前面第一个不一样的数的差距是多少
//结果是(索引)3-0+1=4,后面那个6也是这样算。
#include <cstdio>
int main()
{
	int t,n,i;
	int a[20];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(i = 0;i < n;i ++)
			scanf("%d",&a[i]);
		//res代表结果,count代表一系列的一样的最前面那个和他前一个的差是多少
		//index代表一系列的一样的数的索引,pre代表一个数跟前面第一个不一样的数(w值为1)的索引差距是多少
		int res = 1,count,index,pre = 0;
		printf("1 ");
		for(i = 1;i < n-1;i ++)
		{
			if(a[i] != a[i-1])
			{
				if(res != 1)
					pre = i;
				index = 1;
				count = a[i]-a[i-1];
				res = 1;
			}
			else
			{
				count--;
				if(count > 0)
				{
					index++;
					res = index;
				}
				else
					res = i-pre+1;
			}
			printf("%d ",res);
		}
		printf("%d\n",n);
	}
	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