| ||||||||||
| 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>
char time[20];
char phone[20];
struct Call
{
int m;
int d;
int h;
int s;
int sign;
}arr[1010];
int dp[1010];
int cmp(int i,int j)
{
if(arr[i].m<arr[j].m) return -1;
if(arr[i].m>arr[j].m) return 1;
if(arr[i].d<arr[j].d) return -1;
if(arr[i].d>arr[j].d) return 1;
if(arr[i].h<arr[j].h) return -1;
if(arr[i].h>arr[j].h) return 1;
if(arr[i].s<arr[j].s) return -1;
if(arr[i].s>arr[j].s) return 1;
return 0;
}
int main()
{
int n,t,p,f,i,j,k,min;
char chr;
while(scanf("%d",&n)&&n)
{
for(i=1;i<=n;i++)
{
scanf("%s %s %c",time,phone,&chr);
sscanf(time,"%d:%d:%d:%d",&arr[i].m,&arr[i].d,&arr[i].h,&arr[i].s);
if(chr=='+') arr[i].sign=1;
else arr[i].sign=0;
}
arr[0].m=arr[0].d=arr[0].m=arr[0].s=-1;
arr[0].sign=0;
memset(dp,-1,sizeof(dp));
dp[0]=0;
for(i=1;i<=n;i++)
{
f=0;
for(j=i-1;j>=0;j--)
{
t=cmp(j+1,j);
if(t==0||t==-1) break;
if(dp[i]==-1||dp[j]+1<dp[i]) dp[i]=dp[j]+1;
if(arr[j].sign==1)
{
f=1;
break;
}
}
for(k=j;k>=0&&!f;k--)
{
t=cmp(i,k);
p=cmp(k,k+1);
if(t==1||(k!=j&&p!=-1)) break;
if(dp[i]==-1||dp[k]+1<dp[i]) dp[i]=dp[k]+1;
if(arr[k].sign==1) break;
}
}
min=dp[n];
for(i=n-1;i>=1&&arr[n].sign==0;i--)
{
t=cmp(i+1,i);
if(t==0||t==-1) break;
if(dp[i]<min) min=dp[i];
if(arr[i].sign==1) break;
}
printf("%d\n",min);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator