杭电hdu ACM 1113,测试了多组数据都过,但是交上去WA,求大神找下漏洞?实在找不出了 100

//我的思路是,对数组A和B的两个速度最大的马进行比较,如果A的速度要小,那么田忌就会用A里面速度最小的马和B的速度最大的马匹配,输一局;如果A的速度要大,那么这两个马匹... //我的思路是,对数组A和B的两个速度最大的马进行比较,如果A的速度要小,那么田忌就会用A里面速度最小的马和B的速度最大的马匹配,输一局;如果A的速度要大,那么这两个马匹配,赢一局;如果A和B的速度最大的马速度相等,也会用A里面速度最小的马和B的速度最大的马匹配,输一局。然后继续匹配,已经匹配过的马不再匹配。

#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int N,i,count,m,n,g,h,j,s;
int A[1005],B[1005]; //A是田忌的马的速度的数组,B是大王的
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
while(cin>>N)
{
count=0;
for(i=0;i<N;i++)
cin>>A[i];
for(j=0;j<N;j++)
cin>>B[j];
sort(A,A+N); //先对速度排序,方便下面进行匹配
sort(B,B+N);
m=N-1; //m为数组A的未匹配最大速度下标
s=0; //s为数组A的未匹配最小速度下标
n=N-1; //n为数组B的未匹配最大速度下标
for(j=0;j<N;j++) //总共进行N次匹配
{
if(A[m]==B[n])
{
if(A[s]<B[n])
{
n--;
s++;
count-=200;
}
else if(A[s]==B[n])
{
n--;
s++;
}
}
else if(A[m]<B[n])
{
n--;
s++;
count-=200;
}
else
{
m--;
n--;
count+=200;
}
}
cout<<count<<endl;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
}

}
说错了,是杭电 ACM1052题
http://acm.hdu.edu.cn/showproblem.php?pid=1052
展开
 我来答
听不清啊
高粉答主

2015-07-19 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
这样改了试试?未经调试,可能有差错。
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int N,i,count,m,n,g,h,j,s;
int A[1005],B[1005]; //A是田忌的马的速度的数组,B是大王的
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
while(cin>>N)
{
count=0;
for(i=0;i<N;i++)
cin>>A[i];
for(j=0;j<N;j++)
cin>>B[j];
sort(A,A+N); //先对速度排序,方便下面进行匹配
sort(B,B+N);
i=0; //i为数组A的能获胜的最小速度下标
for(j=0;j<N;j++) //最多进行N次匹配
{
while(A[i]<=B[j] && i < N)i++;
if(i>=N)break;
if(A[i]>B[j])count+=200;
}
for(;j<N;j++)count-=200;
cout<<count<<endl;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式