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 |
测了很多数据就是不知道错哪里,帮看一下程序.#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> struct POINT { int time; char cor[11]; }; int maxv,average; POINT p[101]; int M,N; int time[11][101],count[11]={0}; char color[11][11]; int max(int a,int b) { return (a>b?a:b); } int find(int k[],int a,int s) { //int V[101][10001]={0}; int V[101][1001]={0}; int i,j; for(i=1;i<=a;i++) V[i][0]=0; for(j=1;j<=s;j++) V[0][j]=0; for(i=1;i<=a;i++) for(j=1;j<=s;j++) { V[i][j]=V[i-1][j]; if(k[i]<=j) V[i][j]=max(V[i][j],V[i-1][j-k[i]]+k[i]); } return V[a][s]; } int main() { FILE *file=freopen("wash.in","r",stdin); while(scanf("%d%d",&M,&N),N!=0) { int i,j,sum,csum,min,result=0; memset(count,0,sizeof(count)); for(i=1;i<=M;i++) scanf("%s",&color[i]); for(i=1;i<=N;i++) { scanf("%d%s",&p[i].time,&p[i].cor); for(j=1;strcmp(p[i].cor,color[j])!=0;j++); time[j][++count[j]]=p[i].time; } for(i=1;i<=M;i++) { sum=0; csum=0; // if(count[i]==0)break; for(j=1;j<=count[i];j++)csum+=time[i][j]; sum=csum; average=sum/2; //find(time[i],count[i],average); min=csum-find(time[i],count[i],average); result+=min; } printf("%d\n",result); } //fclose(file); return 1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator