杭电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 展开
#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 展开
1个回答
展开全部
这样改了试试?未经调试,可能有差错。
#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));
}
}
#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));
}
}
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
MCS-51串行接口有四种工作方式,分别是:1. 方式0(8位同步移位寄存器方式),一般用于外接移位寄存器芯片扩展I/O接口。2. 方式1(10位异步收发方式),通常常用于双机通信。3. 方式2(11位异步收发方式),通常常用于多机通信。4...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询