AC 了,但是无法理解
查看原帖
AC 了,但是无法理解
486119
Naptie楼主2021/11/12 21:18

RT,自己在没看题解的情况下写了如下代码:

#include <bits/stdc++.h>
using namespace std;

int n, k, cnt;

void dfs(int pos, int cur, int num) {
	if (pos == k) {
		cnt++;
		return;
	}
	for (int i = cur; i <= num >> 1; i++) {
		dfs(pos + 1, i, num - i);
	}
}

int main() {
	scanf("%d%d", &n, &k);
	dfs(1, 1, n);
	printf("%d\n", cnt);
	return 0;
}

一开始只是写了个很朴实的 DFS,然后发现扫出来一大堆重复的,然后根据样例解释试着改了改循环条件和递归边界条件,发现竟然过了(

想问一下大佬们,这份代码为什么正确,如果不正确,能否来组 hack

2021/11/12 21:18
加载中...