笨方法 样例过不了 请求帮助
查看原帖
笨方法 样例过不了 请求帮助
1375162
MasterBait楼主2024/6/29 01:57
#include<bits/stdc++.h>
using namespace std;
struct ani{
	bool nmless=1; 
	string sd;
};
int main(){
	int t;
	cin>>t;
	string a[101],b[101],b1[101];
	ani mal[101];
	for(int i=0;i<t;i++){//t组数据 
		int x=0;//输入字符串 a0为叫声大全 1-x-1为声音与动物 
		while(cin>>a[x]&&a[x]!="what does the fox say?") x++;//下面是对a0的操作 
		int y=0,sti=0,g=0;//sti指向首位 即叫声1 除了最后一个叫声都由其后空格对应 
		for(int j=0;j<a[0].size();j++){//对a0遍历 
			if(a[0][j]==' '){//找到了空格 
				for(int k=sti;k<j;k++){//从指向处循环至空格前 转移至mal.sd中  
					b1[y][g]=a[0][k];
					g++;
				}
				mal[y].sd=b1[y];
				g=0; //清空位次 
				y++;//存下个声音 
				sti=j+1;//更换指向
				bool p=0;
				for(int k=sti;k<a[0].size();k++){
					if(a[0][k]==' '){
						break;
						p=1;
					}
				} 
				if(!p){
					for(int k=sti;k<a[0].size();k++){
						b1[y][g]=a[0][k];
						g++;
					}
					mal[y].sd=b1[y];
					break;
				}
			}
		}
		int g1=0,y1=0;
		for(int j=1;j<=x-1;j++){//处理声音 名字不重要 
			for(int k=0;k<a[j].size();k++){
				if(a[j][k]=='g'&&a[j][k+1]=='o'&&a[j][k+2]=='e'&&a[j][k+3]=='s'){
					for(int l=k+5;l<a[j].size();l++){
						b[y1][g1]=a[j][l];
						g1++;
					}
					g1=0;y1++;break;
				}
			}
		}
		for(int j=0;j<y1;j++){
			for(int k=0;k<=y;k++){
				if(b[j]==mal[k].sd) mal[k].nmless=0;
			}
		}
		for(int j=0;j<=y;j++){
			if(mal[j].nmless){
				cout<<mal[j].sd<<" ";
			}
		}
	}
	return 0;
} 
2024/6/29 01:57
加载中...