| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
why wa???请牛人指教!谢谢!!!//我的思路:分析后找规律。
//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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator