UVA10910 - Marks Distribution(dp)
제목 링크
제목의 뜻: N, T, P를 주고 F(N, T, P)를 찾으면 N개의 수를 요구한다. 각 수는 적어도 P보다 크고 T와 같은 조합 방식은 몇 가지가 있는가.
문제풀이 방향:DP,f[n+1][sum+i]+=f[n][sum];i 는 p부터 T - sum까지입니다.
코드:
#include <cstdio>
#include <cstring>
typedef long long ll;
const int maxn = 75;
int N, T, P;
ll f[maxn][maxn];
void init () {
memset (f, -1, sizeof(f));
}
ll dp(int k, int sum) {
ll& ans = f[k][sum];
if (ans != -1)
return ans;
if (k == N) {
if (sum == T)
return ans = 1;
return ans = 0;
}
ans = 0;
for (int i = P; i <= T - sum; i++) {
if (i + sum <= T)
ans += dp(k + 1, sum + i);
else
break;
}
return ans;
}
int main () {
int K;
scanf ("%d", &K);
while (K--) {
scanf ("%d%d%d", &N, &T, &P);
init();
printf ("%lld
", dp(0, 0));
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.