仍然还有个问题,比较复杂
  • 板块学术版
  • 楼主卷王慢即快
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/8/5 21:34
  • 上次更新2023/10/27 16:49:36
查看原帖
仍然还有个问题,比较复杂
494699
卷王慢即快楼主2022/8/5 21:34

我问的是程序题。。。

请看,大佬可以把程序复制到本地里运行,看看程序是啥意思(我不会才发出来的):

#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,

有大佬能解释一下源程序的意思吗?(或者回答:只能枚举暴力),其实题目说这道题不用电脑就可以解。。。

2022/8/5 21:34
加载中...