我问的是程序题。。。
请看,大佬可以把程序复制到本地里运行,看看程序是啥意思(我不会才发出来的):
#include <iostream>
using namespace std;
int main()
{
char a[100][100], b[100][100];
string c[100];
string tmp;
int n, i = 0, j = 0, k = 0, total_len[100], length[100][3];
cin >> n;
getline(cin, tmp);
for (i = 0; i < n; i++)
{
getline(cin, c[i]);
total_len[i] = c[i].size();
}
for (i = 0; i < n; i++)
{
j = 0;
while (c[i][j] != ':')
{
a[i][k] = c[i][j];
k = k + 1;
j++;
}
length[i][1] = k - 1;
a[i][k] = 0;
k = 0;
for (j = j + 1; j < total_len[i]; j++)
{
b[i][k] = c[i][j];
k = k + 1;
}
length[i][2] = k - 1;
b[i][k] = 0;
k = 0;
}
for (i = 0; i < n; i++)
{
if (length[i][1] >= length[i][2])
cout << "NO,";
else
{
k = 0;
for (j = 0; j < length[i][2]; j++)
{
if (a[i][k] == b[i][j])
k = k + 1;
if (k > length[i][1])
break;
}
if (j == length[i][2])
cout << "NO,";
else
cout << "YES,";
}
}
cout << endl;
return 0;
}
如果大佬们不喜欢以上那个版本的程序(就是题目里的程序),请看这个版本:
#include<iostream>
using namespace std;
char a[100][100],b[100][100];
string c[100],tmp;
int n,i,j,k,total_len[100],length[100][3];
int main()
{
cin>>n;
getline(cin,tmp);
for(i=0;i<n;i++)
{
getline(cin,c[i]);
total_len[i]=c[i].size();
}
for(i=0;i<n;i++)
{
j=0;
while(c[i][j]!=':')
{
a[i][k]=c[i][j];
k++; j++;
}
length[i][1]=k-1;
a[i][k]=0; k=0;
for(j=j+1;j<total_len[i];j++)
{
b[i][k]=c[i][j]; k++;
}
length[i][2]=k-1;
b[i][k]=0; k=0;
}
for(i=0;i<n;i++)
{
if(length[i][1]>=length[i][2]) cout<<"NO,";
else
{
k=0;
for(j=0;j<length[i][2];j++)
{
if(a[i][k]==b[i][j]) k++;
if(k>length[i][1]) break;
}
if(j==length[i][2]) cout<<"NO,";
else cout<<"YES,";
}
} return 0;
}
输入:
3
AB:ACDEbFBkBD
AR:ACDBrT
SARS:Severe Atypical Respiratory Syndrome
输出:_________ (注:输入各行前后均无空格)
上面是我没做出来的题,但是题目给了答案是
YES,NO,YES,
有大佬能解释一下源程序的意思吗?(或者回答:只能枚举暴力),其实题目说这道题不用电脑就可以解。。。