记录一些DFS的题目
参考博客
DFS:
//DFS
#include <iostream>
#define MAX 9999
#define MIN -9999
using namespace std;
int n,m,a[10],d=MAX;
void DFS(int k){
if(k==m){
int max1=MIN;
int min1=MAX;
for(int i=0;i<m;++i){
if(a[i]<min1) min1=a[i];
if(a[i]>max1) max1=a[i];
}
d=min(d,max1-min1);
return;
}
for(int i=0;i<k;++i){
for(int j=i+1;j<k;++j){
a[i]+=a[j];
swap(a[j],a[k-1]);
DFS(k-1);
swap(a[j],a[k-1]);
a[i]-=a[j];
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;++i){
cin>>a[i];
}
DFS(n);
cout<<d;
return 0;
}