题目求助
  • 板块题目总版
  • 楼主Cool_Windly
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/12 21:49
  • 上次更新2024/3/13 12:39:37
查看原帖
题目求助
938510
Cool_Windly楼主2024/3/12 21:49

原题

我的代码:

#include<bits/stdc++.h>
using namespace std;
int w,n,p[30001],cnt;

int main()
{
	cin>>w>>n;
	for(int i=1;i<=n;i++) cin>>p[i];
	sort(p,p+n);
	int x=n;
	for(int i=1;i<=x;i++)
	{
		if(p[i]+p[x]<=w) x--,cnt++;
		else i--,x--,cnt++;	
	}
	cout<<cnt<<endl;
	return 0;
}

题解代码:

#include<bits/stdc++.h>
using namespace std;
int W,ans=0;
int n,a[30001];
int l,r,i;
int main()
{
    scanf("%d%d",&W,&n);
    for(i=1;i<=n;i++)
      scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    l=1;  r=n;
    while(l<=r)//一定要有等号。
    {
        if(a[l]+a[r]<=W)   //一定要有等号。
          l++,r--,ans++;
        else
          r--,ans++;   //贪心过程
    }
    printf("%d",ans);
    return 0;
}

想问一下是哪里出了问题,看了一下感觉和题解一样为什么会错

2024/3/12 21:49
加载中...