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