社区讨论
蒟蒻求问,我这种贪心加排序的策略有怎么样的例子会输出错误
P2392kkksc03考前临时抱佛脚参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo2pb1ue
- 此快照首次捕获于
- 2023/10/23 17:34 2 年前
- 此快照最后确认于
- 2023/10/23 17:34 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
int a[30],b[30],c[30],d[30];
bool cmp(int x,int y)
{
if(x>y)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int s1,s2,s3,s4,l=0,num=0;
scanf("%d%d%d%d",&s1,&s2,&s3,&s4);
for(int i=1;i<=s1;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=s2;i++)
{
scanf("%d",&b[i]);
}
for(int i=1;i<=s3;i++)
{
scanf("%d",&c[i]);
}
for(int i=1;i<=s4;i++)
{
scanf("%d",&d[i]);
}
sort(a+1,a+1+s1,cmp);
sort(b+1,b+1+s2,cmp);
sort(c+1,c+1+s3,cmp);
sort(d+1,d+1+s4,cmp);
for(int i=1;i<=s1;i++)
{
if(a[i]>l)
{
l=a[i]-l;
num+=l;
}
else if(a[i]==l)
{
l=0;
}
else if(a[i]<l)
{
l=l-a[i];
}
}
l=0;
for(int i=1;i<=s2;i++)
{
if(b[i]>l)
{
l=b[i]-l;
num+=l;
}
else if(b[i]==l)
{
l=0;
}
else if(b[i]<l)
{
l=l-b[i];
}
}
l=0;
for(int i=1;i<=s3;i++)
{
if(c[i]>l)
{
l=c[i]-l;
num+=l;
}
else if(c[i]==l)
{
l=0;
}
else if(c[i]<l)
{
l=l-c[i];
}
}
l=0;
for(int i=1;i<=s4;i++)
{
if(d[i]>l)
{
l=d[i]-l;
num+=l;
}
else if(d[i]==l)
{
l=0;
}
else if(d[i]<l)
{
l=l-d[i];
}
}
cout<<num;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...