贪心算法
每一步达到局部最优解
步骤:
1.最优子结构(排序、优先队列)
2.
练习:
排序,分段
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int b[n];
for(int i=0;i<n-1;i++)
{
b[i]=a[i+1]-a[i];
}
sort(b,b+n-1);
//直接比较
int ans=a[2]-a[1];
for(int i=1;i<n;i++)
{
ans=min((a[i]-a[i-1]),ans);
}
cout<<ans;
cout<<b[0];
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int w,n;
cin>>w>>n;
int p[n+1];
for(int i=0;i<n;i++)
{
cin>>p[i];
}
sort(p,p+n);
int a=0;
int b=n-1;
int zu=0;
while(true)
{
if(a>b)
{cout<<zu;break;}
else if(a==b)
{zu++;cout<<zu;break;}
else{
if((p[a]+p[b])<=w)
{
zu++;
a++;
b--;
}
else{
b--;
zu++;
}}
}
return 0;
}
abc 在C++中会被解析为 (a==b)==c