Description
给出
n
个长度为
Input
第一行两个整数
n,k
,之后输入
n
个长度为
Output
输出改变顺序后数字极差的最大值
Sample Input
6 4
5237
2753
7523
5723
5327
2537
Sample Output
2700
Solution
用 next_permutation 函数改变 k <script type="math/tex" id="MathJax-Element-23">k</script>个位置的排列然后暴力找出极差更新最大值即可
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=15;
int n,k,a[maxn];
char s[maxn][maxn];
int main()
{
while(~scanf("%d%d",&n,&k))
{
int ans=1e9;
for(int i=1;i<=n;i++)scanf("%s",s[i]);
for(int i=0;i<k;i++)a[i]=i;
do
{
int res=0;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
int temp=0;
for(int l=0;l<k;l++)
temp=10*temp+(s[i][a[l]]-s[j][a[l]]);
res=max(res,abs(temp));
}
ans=min(ans,res);
}while(next_permutation(a,a+k));
printf("%d\n",ans);
}
return 0;
}