HDU 2089 필요 없음 62(디지털 dp)
디지털
수신의 말에 의하면 이것은 디지털 dp의 가장 기초적인 제목이라고 한다. 학습 중이다.
이런 제목을 만들면 기억화 검색이 더 뚜렷하게 나오는 것 같아서요.
dp[pos][0]는 길이가pos+1이고 제pos+2위는 6의 요구에 부합되는 수가 아니다. dp[pos][1]은 길이가pos+1이고 제pos+2위는 6의 요구에 부합되는 수의 합이다.
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_N = 10 + 5;
int dp[MAX_N][2];
int num[MAX_N];
int n,m;
int f(int pos, int st, bool limit)
{
if(pos == -1)
return 1;
if(!limit && dp[pos][st] != -1)
return dp[pos][st];
int ans = 0;
int last = limit ? num[pos] : 9;
for(int i = 0; i <= last; i++)
{
if(i == 4 || (i == 2 && st))
continue;
ans += f(pos - 1, i == 6, limit && i == last);
}
if(!limit)
dp[pos][st] = ans;
return ans;
}
int cal(int n)
{
int pos = 0;
while(n > 0)
{
num[pos] = n % 10;
n /= 10;
pos++;
}
return f(pos - 1, 0, 1);
}
int main()
{
memset(dp, -1, sizeof(dp));
while(cin >> n >> m, n + m)
cout << cal(m) - cal(n - 1)<< endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.