先排序然后,因
为限制条件比较多,一次最多两个,所以要么当前最大的配一个最小的一起,要么单独当前最大的自己
#include<iostream>
#include<cstdlib>
using namespace std;
int a[305];
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n, m;
cin>>n>>m;
for(int i=0;i<m;i++)
cin>>a[i];
qsort(a, m, sizeof(a[0]), cmp);
int left=0, right=m-1, count=0;
while(left <= right)
{
if((a[right] + a[left]) <= n)
{
left++;
right--;
}
else
{
right--;
}
count++;
}
cout<<count<<endl;
}
return 0;
}
排序与配对算法实现
本文介绍了一种通过排序和配对解决特定问题的算法实现。该算法首先对输入数组进行排序,然后根据条件尝试将最大值与最小值配对以满足给定约束条件。如果配对成功,则同时移除这两个元素;如果不满足条件,则仅移除最大值。最终统计的配对次数即为算法输出结果。
2366

被折叠的 条评论
为什么被折叠?



