2523 小b删列(暴力)

小b有一个n*m的矩阵A,矩阵的每个元素为一个字符,现在她希望删除其中的一些列,使得剩下的列在每一行形成的字符串的字典序不降。
即对于第i行,将剩下的列上的字符顺序拼接,形成一个字符串,字符串记作a[i]。要求a[i]<=ai+1
请问小b最少要删多少列。
如A = {“abcdef”, “uvwxyz”},删除的列为第1,3,4列,删除后 A 为 {“bef”, “vyz”},且 “bef” <= “vyz”
样例解释:
删掉第一列,剩下的是"a" “b” “c”,“a” <= “b” <= “c”,满足条件。
输入
第一行输入一个正整数n,表示矩阵A的行数;
之后n行每行输入一个字符串,其长度相等;
1≤n,m≤100。
输出
输出一个非负整数,表示删掉的列数
输入样例

3
ca
bb
ac
输出样例
1

#include<bits/stdc++.h>
using namespace std;
string G[101];
int hascut[101];
int main()
{
    ios::sync_with_stdio(false);
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	 cin>>G[i];
	int len=G[0].length();
	int res=0;
	for(int i=1;i<n;i++)
	{
		int reset=0;
		for(int j=0;j<len;j++)
		{
			if(hascut[j]||G[i][j]==G[i-1][j])//已经被删或者相等 
				continue;
			if(G[i][j]>G[i-1][j])
			 break;
			else
			{
				hascut[j]=1;
				res++;
				reset=1;
			}
		}
		if(reset)//有删列,从头开始重新找起 
		    i=0;
	}
	cout<<res<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值