求助
  • 板块灌水区
  • 楼主__shadow__
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/14 19:50
  • 上次更新2023/10/27 07:33:28
查看原帖
求助
191819
__shadow__楼主2022/10/14 19:50
正确
#include<cstdio>
using namespace std;
const int mod = 12345678;
const int N = 150 + 5;
int n, m, k;
int f[N][N][25][25];
int min(int a, int b)
{
	return a < b ? a : b;
}
int max(int a, int b)
{
	return a > b ? a : b;
}
int ans;
int main()
{
	scanf ("%d%d%d", &n, &m, &k);
	f[0][0][0][0] = 1;
	for (int i = 0;i <= n; i++)
		for (int j = 0;j <= m; j++)
			for (int l_b = 0;l_b <= k; l_b++)
				for (int l_g = 0;l_g <= k; l_g++)
					if (f[i][j][l_b][l_g])
					{
						f[i + 1][j][l_b + 1][max(l_g - 1, 0)] += f[i][j][l_b][l_g];
						f[i + 1][j][l_b + 1][max(l_g - 1, 0)] %= mod;
						f[i][j + 1][max(l_b - 1, 0)][l_g + 1] += f[i][j][l_b][l_g];
						f[i][j + 1][max(l_b - 1, 0)][l_g + 1] %= mod;
					}
	for (int i = 0;i <= k; i++)
		for (int j = 0;j <= k; j++)
		{
			ans += f[n][m][i][j];
			ans %= mod;
		}
	printf ("%d", ans);
	return 0;
}
#include<cstdio>
using namespace std;
const int mod = 12345678;
const int N = 150 + 5;
int n, m, k;
int f[N][N][25][25];
int min(int a, int b)
{
	return a < b ? a : b;
}
int max(int a, int b)
{
	return a > b ? a : b;
}
int ans;
int main()
{
	scanf ("%d%d%d", &n, &m, &k);
	f[0][0][0][0] = 1;
	for (int i = 0;i <= n; i++)
		for (int j = 0;j <= m; j++)
			for (int l_b = 0;l_b <= k; l_b++)
				for (int l_g = 0;l_g <= k; l_g++)
				{
					if (i != 0 && l_b != 0)
					{
						f[i][j][l_b][l_g] += f[i - 1][j][l_b - 1][l_g + 1];
						f[i][j][l_b][l_g] %= mod;
					}
					if (j != 0 && l_g != 0)
					{
						f[i][j][l_b][l_g] += f[i][j - 1][l_b + 1][l_g - 1];
						f[i][j][l_b][l_g] %= mod;
					}
				}
	for (int i = 0;i <= k; i++)
		for (int j = 0;j <= k; j++)
		{
			ans += f[n][m][i][j];
			ans %= mod;
		}
	printf ("%d", ans);
	return 0;
}

我觉得差不多 不知道第二种写法哪里错了

P2592

2022/10/14 19:50
加载中...