竞赛讨论区 > B题求助!!!
头像
NCHU_21_糜瑞骅
发布于 2021-11-27 20:17
+ 关注

B题求助!!!

有没有大佬能告诉我怎么做到遍历Y[i][s[j]],s[j]为字符型数组,这种遍历Y[i][      ]的一维数组求最小值怎么弄,[    ]里面代表的是任意字符。
#include<bits/stdc++.h>
using namespace std;
string s;
int k;
char a[11][50];
long b[11][50];
long z[11][50][100010];
long y[11][50];
long u[11][50];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s>>k;
		long e=0;
		long f=100010;
		long c=0;
		long g=0;
		long d=s.length();
		for(int j=0;j<d;j++){
			if(b[i][s[j]]==0){
				c++;
				z[i][s[j]][c]=j;
				b[i][s[j]]++;
			}
			else{
				c++;
				z[i][s[j]][c]=j;
				b[i][s[j]]++;
			}
			if(b[i][s[j]]==k){
				e++;
				g++;
				y[i][s[j]]=j-z[i][s[j]][g];
				u[i][e]=y[i][s[j]];
			}
			else if(b[i][s[j]]>k){
				g++;
				if(j-z[i][s[j]][g]<y[i][s[j]]){
					y[i][s[j]]=j-z[i][s[j]][g];
				}
			}
		}
		for(int t=1;t<=e;t++){
			f=(min(f,u[i][t]));
		}
		if(e==0){
			cout<<-1<<endl;
		}else{
			cout<<f+1<<endl;
		}
	}
}

全部评论

(2) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐