同样的思路,用c能过,用python不能过.... python最后两个测试点超时... 什么时候能优化一下python 的判题啊...
#include <stdio.h>
int n, k;
int ans = 0;
void dfs(int now, int step, int sumN) {
if (sumN == n && step == k) {
ans++;
return;
}
if (sumN > n || step == k) {
return;
}
int end = (n - sumN) / (k - step);
for (int i = now; i <= end; i++) {
dfs(i, step + 1, sumN + i);
}
}
int main() {
scanf("%d %d", &n, &k);
dfs(1, 0, 0);
printf("%d\n", ans);
return 0;
}
# @Time : 2023/9/15 10:51
# @Author : Ohuo
# @FileName: P1025 [NOIP2001 提高组] 数的划分.py
# @Software: PyCharm
n, k = map(int, input().split())
ans = 0
def dfs(now, step, sumN):
global ans
if sumN == n and step == k:
ans += 1
return
if sumN > n or step == k:
return
end = int((n - sumN) / (k - step))
for i in range(now, end + 1):
dfs(i, step + 1, sumN + i)
if __name__ == '__main__':
dfs(1, 0, 0)
print(ans)