9.2更:看了一下c++知识,大概知道错在哪了 第一个定义的是字符数组 第二个定义的是字符串。
-----------------------------------------------------------------------------------------------------------------------------------------
这个题做了好久 没觉得思路有问题 借鉴了一下别人的
第一个代码是我写的 显示通过8个 共10个
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
using namespace std;
int main(){
char a[10];
char b[1010][10];
int c[1010];
int n;
int k=0;
cin>>a;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<9;j++){
cin>>b[i][j];
}
}
for(int m=0;m<n;){
for(int j=0;j<9;){
if(a[j]==b[m][j]||a[j]=='*'){
j++;
if(j==8){
c[k]=m;
k+=1;
m++;
break;
}
}
else{
m++;
break;
}
}
}
printf("%d\n",k);
for(int d=0;d<k;d++){
int x=c[d];
printf("%s\n",b[x]);
}
return 0;
}
基本思路没改 把字符串定义改了一下
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int main()
{
string s;
string a[1000];
int c[1000];
int flag,n,i,j,count=0;
int k=0;
cin>>s;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;)
{
for(j=0;j<9;)
{
if(s[j]=='*'||s[j]==a[i][j])
{
j++;
if(j==8){
c[k]=i;
k+=1;
i++;
break;
}
}
else{
i++;
break;
}
}
}
printf("%d\n",k);
for(i=0;i<k;i++){
cout<<a[c[i]]<<endl;
}
return 0;
}