这个是问题:这里有一个非常著名的中国故事。“大约2300年以前,田忌将军是齐国高级官员,他喜欢和国王还有其它的人赛马”。“田忌和国王都有3匹不同档次的马,即普通的,好的,以及最...
这个是问题:
这里有一个非常著名的中国故事。“大约2300年以前,田忌将军是齐国高级官员,他喜欢和国王还有其它的人赛马”。“田忌和国王都有3匹不同档次的马,即普通的,好的,以及最好的。赛马的规则是在一次比赛中有三轮,每匹马必须跑一轮。输一轮比赛就要输掉200银元。”“作为国家里最具权威的国王,当然具有超级无敌的骏马,他的每一种档次的马都要比田忌的快。因此,国王每次都从田忌那里赢600银元。”“当然田忌心里是非常的郁闷的,这种状况直到他遇见了中国历史上非常有名的将军孙膑,才发生变化。田忌根据孙膑告诉他的一个小计谋,终于从国王那里赢回了200银元,并且在以后的比赛中,一直都保持了这个荣誉。”“这是一个非常简单的计谋。用他的普通马与国王最好的马进行比赛,当然他会输掉本轮角逐,然后,再用他的好马与国王的普通马对决,最后用他最好的马与国王的好马对决。这是一个多么简单的计谋呀,你是怎么看待中国历史上这位高级官员田忌的呢?” 如果田忌生活在现在,他一定会笑他自己的;而如果他在现在的ACM竞赛中,他会发现,在偶图中寻找最大配对非常容易就能发现赛马问题。把田忌的马画在一边,国王的马在另一边。当田忌的一匹马能够打败国王的一匹马时,我们就在这两匹马之间画一条边, 意味着我们希望建立这样的配对。于是,赛马赢得尽量多的轮次的问题就是在偶图中寻找尽可能多的配对。如果这里有更多的关系,问题就会变得复杂,他可以给所有可能的边都附上权值-1、0或1,再找到每种匹配的最大权值。然而,赛马问题是偶图匹配中的一个非常特殊的例子。这个图取决于马的速度,高速顶点打败低速顶点。本问题就是要你写一个程序,解决种种非常特殊的匹配。
Input
最多有50个测试用例。每一个用例的第一行是正整数 n (n <= 1000),代表每边马的数目,第二行的n个整数是田忌的马的速度,第三行的n个数是国王的马的速度。在最后一个测试用例的下一行的0,代表输入结束。
Output
对每一个输入的测试用例,在一行中输出一个数字,表示田忌能够赢得的最多钱(用银元数表示)。
Sample Input
3
92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
0
Sample Output
200
0
0
这是我编的程序,大家可以去试运行下,保证没错误,可为什么通不过呢?小弟等高人指点急求!!!#include
#include
void main()
{
int a,*b,*c,*d,*e,*f,g,h,*i,*j,k,m;
while(scanf("%d",&a)!=EOF)
{
if(a==0)
continue;
m=0;
k=0;
b=(int*)malloc(a*sizeof(int));
c=(int*)malloc(a*sizeof(int));
d=(int*)malloc(sizeof(int));
e=b;
i=b;
f=c;
j=c;
for(g=1;g<=a;g++)
{
scanf("%d",b);
b++;
}
b=e;
b++;
for(g=1;g
{
for(h=g;h