为什么这两份代码结果不一?好像一样啊
查看原帖
为什么这两份代码结果不一?好像一样啊
809729
SJZ2010楼主2023/10/4 12:53

AC:

#include <cstdio>
#include <cstring>
#include <algorithm>

const int N = 2e3 + 5;

int n, m, v[N];
int f[N], g[N];

int main() {
	scanf("%d %d", &n, &m);
	register int i, j;
	for (i = 1; i <= n; i++)
		scanf("%d", &v[i]);
	f[0] = g[0] = 1;
	for (i = 1; i <= n; i++)
		for (j = m; j >= v[i]; j--) {
			f[j] += f[j - v[i]];
			f[j] %= 10;
		}
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= m; j++) {
			if (j - v[i] >= 0)
				g[j] = (f[j] - g[j - v[i]] + 10) % 10;
			else
				g[j] = f[j] % 10;
			printf("%d", g[j]);
		}
		printf("\n");
	}	
	return 0;
}

20:

#include <cstdio>
#include <cstring>
#include <algorithm>

const int N = 2e3 + 5;

int n, m, v[N];
int f[N], g[N];

int main() {
	scanf("%d %d", &n, &m);
	register int i, j;
	for (i = 1; i <= n; i++)
		scanf("%d", &v[i]);
	f[0] = 1, g[0] = 1;
	for (i = 1; i <= n; i++)
		for (j = m; j >= v[i]; j--) {
			f[j] += f[j - v[i]];
			f[j] %= 10;
		}
	for (i = 1; i <= n; i++) {
		for (j = 1; j < v[i]; j++) {
			g[j] = f[j] % 10;
			printf("%d", g[j]);
		}
		for (j = v[i]; j <= m; j++) {
			g[j] = (f[j] - g[j - v[i]] + 10) % 10;
			printf("%d", g[j]);
		}
		printf("\n");
	}	
	return 0;
}
2023/10/4 12:53
加载中...