ACM 트레이닝 방법 [단순 반복 + 기억화 검색]
제목
제목 설명
자전거 선수는 훈련할 때 장소를 둘러싸고 N바퀴를 타야 한다.주어서 훈련을 효과적으로 할 수 있다. 한 번에 N을 모두 탈 수도 있고 몇 번으로 나누어 완성할 수도 있다. 그러나 매번 지난번에 탄 바퀴 수보다 많다. 그러면 한 번의 훈련을 완성하면 N바퀴를 탈 수 있고 여러 가지 훈련 방식이 있다.
샘플 입력
육
샘플 출력
사
제목 분석
예를 들어 N = 6시에는 다음과 같은 4가지 훈련 방안이 있습니다.
자세히 생각해 보면 이것은 간단한 귀속이다. 매번 전달되는 매개 변수는 이전에 선택한 값(이번에 선택한 값보다 작을 수 없음)과 현재 남은 사용 가능한 총량은 기억화 검색을 사용하지 않으면 데이터가 100까지 올라가는 것이 비교적 힘들기 때문에 분명히 기억화 검색을 사용해야 한다.
전체 코드
#include
#include
#include
#define maxn 500
using namespace std;
long long m[maxn][maxn];
bool vis[maxn][maxn];
int dd(int i, int n) {
if (vis[i][n])
return m[i][n];
vis[i][n] = true;
if (n == 0)
return m[i][n] = 1;
else if (i >= n)
return m[i][n] = 0;
else {
for (int j = i + 1; j <= n; ++j) {
m[i][n] += dd(j, n - j);
}
return m[i][n];
}
}
int main() {
int n;
while (cin >> n) {
memset(m, 0, sizeof(m));
memset(vis, false, sizeof(vis));
for (int i = 1; i <= n; ++i) {
dd(i, n - i);
}
for (int i = 1; i <= n; ++i)
m[0][n] += m[i][n-i];
cout << m[0][n] << endl;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
마늘 계산기 난제 라이브러리 130 대량 교체 문자열531회 1000ms 65536K 네트워크 프로그래밍에서 URL에 공백,'#'등과 같은 특수 문자가 있으면 서버가 식별할 수 없어서 정확한 매개 변수 값을 얻을 수 없습니다. 이 특수 문자를 서버가 식별할 수 있는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.