x1 - x2 < 0不等价于 x1 < x2吗?
查看原帖
x1 - x2 < 0不等价于 x1 < x2吗?
1094889
xrqqqqq楼主2024/3/13 09:13
#include<bits/stdc++.h>
using namespace std;
const int N = (int)1e2+5;
char t[N];
int dp[N][N];
vector<string> s[N];
int a, n;
bool ask(int w, string k)
{
	for (int i = w; i >= w - k.size() + 1; i--)
	{
		if (t[i] != k[k.size() - (w - i + 1)])
		{
			return false;
		}
	}
	return true;
}
int main() {
	cin >> t + 1;
	int len = strlen(t+1);

	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> a;
		for (int j = 1; j <= a; ++j) {
			string e;
			cin >> e;
			s[i].push_back(e);
		}
	}
	
	for (int i = 0; i <= n; i++)
	{
		for (int j = 1; j <= len; j++)
		{
			dp[i][j] = 0x3f3f3f3f;
		}
	}
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= len; ++j) {
			
			dp[i][j] = dp[i - 1][j];
			for (auto& k : s[i]) {
				if (j-k.size()<0 || !ask(j, k)) {//为什么换成j < k.size()才过
					continue;
				}                                          
				 dp[i][j] = min(dp[i][j], dp[i - 1][j - k.size()]+1);
			}
		}

	}	
	

	cout << (dp[n][len]==0x3f3f3f3f?-1:dp[n][len]);
}

为什么换成j < k.size()才过 为什么换成j < k.size()才过 为什么换成j < k.size()才过

2024/3/13 09:13
加载中...