解题思路:大水题没什么好说的

注意事项:不懂请留言!

参考代码:

#include <bits/stdc++.h>
using namespace std;
int n,k;
int const maxn=30000+10;
int a[maxn],flag[maxn];
int cmp(int a,int b){
	return a>b;
}
int main(){
	cin>>k>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1,cmp);
	int i=1,j=n,ans=0;
	while(1){
		if(flag[i]==1)
			break;
		if(a[i]+a[j]<=k){
			flag[i++]=1;
			flag[j--]=1;
			ans++;
		}
		else{
			flag[i++]=1;
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

uq_99597670166 2年前 回复TA
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int max,num,sum=0,t=0;
	cin>>max>>num;
	int a[num];
	for(int i=0;i<num;i++)
	{
		cin>>a[i];
	}
	sort(a,a+num);
	for(int i=0;i<=num-1;)
	{

		if(a[i]+a[num-1-i]>max)
		{
			sum++;
			num--;
		}
		else
		{
			i++;
			num--;
		}
	}
	cout<<sum;
}
大佬能不能帮我看看哪里错了
月儿会弯 3年前 回复TA
@靠近一点点 数组开小了
靠近一点点 4年前 回复TA
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{   int sum=0;
    int l=0;
    int n;
    int str[100];
    int m;
    cin>>m;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>str[i];
    }
    sort(str+1,str+n+1);
    int i,j;
    i=1;
    j=n;
  while(i<=j)
    {
        if(str[i]+str[j]>m)
          {
               sum=sum+1;
               j--;
          }
       if(str[i]+str[j]<=m)
         {
              l=l+1;
              i++;
              j--;
         }

    }
    cout<<sum+l<<endl;
    return 0;
}怎么老是说数组越界呐