说出来这道题我为什么WA,你可能都不信,我把按位数乘的=写成了+=,我真的是佛了。。。假装这道题是自己不会全排列WA的,这里注意全排列的一个用法,数据很小也不用怕超时,还是比较好想。
题目:https://vjudge.net/problem/CodeForces-124B
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
const int INF=0x3f3f3f3f;
int n,k;
char dig[10][10];
int bit[20];
int main()
{
while(scanf("%d %d",&n,&k)==2)
{
for(int i=0;i<n;i++) scanf("%s",dig[i]);
for(int i=0;i<k;i++) bit[i]=i;
int ans=INF;
do{
int minn=INF,maxx=-1;
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<k;j++)
{
sum=sum*10+dig[i][bit[j]];
}
//cout<<"输出中间值 "<<sum<<endl;
minn=min(minn,sum);
maxx=max(maxx,sum);
}
ans=min(ans,maxx-minn);
}while(next_permutation(bit,bit+k));
printf("%d\n",ans);
}
return 0;
}