[白俊]1562階数
白準1562次数
https://www.acmicpc.net/problem/1562
単純な階段数
https://www.acmicpc.net/problem/10844
簡単なステップ数の問題では,0から9のいずれも出現しなければならない条件の問題を追加した.
->0~9ビットマスクとして保存
->すべて表示される場合bitmask=1111111(バイナリ)=1023(10進)
https://www.acmicpc.net/problem/1562
単純な階段数
https://www.acmicpc.net/problem/10844
簡単なステップ数の問題では,0から9のいずれも出現しなければならない条件の問題を追加した.
->0~9ビットマスクとして保存
->すべて表示される場合bitmask=1111111(バイナリ)=1023(10進)
#include<iostream>
#include<cstring>
#include <algorithm>
using namespace std;
int N =1;
int cache[101][10][1024];
int getCnt(int len, int num, int bitmask) {
//base case
if (num < 0 || num > 9) return 0;
if (len == N)
if(bitmask == 1023) return 1;
else return 0;
int&ret = cache[len][num][bitmask];
if (ret != -1) return ret;
return ret = (getCnt(len + 1, num + 1, bitmask | (1 << (num+1))) + getCnt(len + 1, num - 1, bitmask | (1 << (num - 1)))) % 1000000000;
}
int main(void){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
memset(cache, -1, sizeof(cache));
cin >> N;
int cnt = 0;
for (int num = 1; num <= 9; num++)
cnt = (cnt + getCnt(1, num, 1 << num)) % 1000000000;
cout << cnt;
return 0;
}
Reference
この問題について([白俊]1562階数), 我々は、より多くの情報をここで見つけました https://velog.io/@sunjoo9912/백준-1562-계단-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol