#include<iostream>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<string>
#include<string.h>
using namespace std;
#define pi acos(-1.0)
#define LL long long
#define inf 0x7fffffff
#define eps 1e-8
#define E exp(1.0)
template<typename T> T Gmax(T a,T b){return a>b?a:b;}
template<typename T> T Gmin(T a,T b){return a<b?a:b;}
const int N=0;
struct node
{
char s[51];
int id;
}str[51];
bool cmp(node a,node b)
{
if(strcmp(a.s,b.s)<0)
return true;
if(strcmp(a.s,b.s)==0)
return a.id<b.id;
return false;
}
int main()
{
int n,m,i,j,k;
int dp[51];
while(scanf("%d%d",&n,&m)!=-1)
{
getchar();
int sum=0,Max;
for(i=1;i<=n;i++)
{
for(j=0;j<m;j++)
{
gets(str[j].s);
str[j].id=j;
}
sort(str,str+m,cmp);
// for(k=0;k<m;k++)
// cout<<str[k].s<<" "<<str[k].id<<endl;
for(k=0;k<m;k++)
dp[k]=1;
Max=1;
for(k=1;k<m;k++)
{
// cout<<"1"<<endl;
for(j=0;j<k;j++)
{
if(str[j].id<str[k].id)
{
if(dp[j]+1>dp[k])
dp[k]=dp[j]+1;
}
}
if(dp[k]>Max)
Max=dp[k];
}
// cout<<max<<endl;
sum+=(m-Max);
}
printf("%d\n",sum);
}
return 0;
}
ZOJ Monthly, August 2011 zoj 3523
最新推荐文章于 2017-05-06 20:52:00 发布
本文深入探讨了C++代码中字符串排序与动态规划的应用,通过实例展示了如何优化代码实现效率。主要内容包括字符串比较、动态规划算法的运用,以及在实际编程场景中的实践技巧。

99

被折叠的 条评论
为什么被折叠?



