题目:http://codeforces.com/problemset/problem/124/B
思路:学会用while(next_permutation(...))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> using namespace std; #define inf 0xfffffff int num[10][10]; int p[10]; int main() { char s; int n,k; cin>>n>>k; for(int i=0;i<n;i++) for(int j=0;j<k;j++) { cin>>s; num[i][j]=s-'0'; } for(int i=0;i<k;i++) p[i]=i; int ans=inf; do{ int mx=-inf,mi=inf; int tmp; for(int i=0;i<n;i++) { tmp=0; for(int j=0;j<k;j++) { tmp*=10; tmp+=num[i][p[j]]; } mi=min(mi,tmp); mx=max(mx,tmp); } ans=min(mx-mi,ans); }while(next_permutation(p,p+k)); cout<<ans<<endl; }