알고리즘/BOJ문제풀이

boj 14437 준오는 심술쟁이!!

quantdave 2017. 2. 7. 17:43








#include <iostream>

#include <string>

#include <memory.h>

using namespace std;



int d[3001][3001];


int s;

string str;

//

//int dp(int len, int s)

//{

//

// if(s==0)return 1;

// if(s<0) return 0;

// if(len==1) {

// if(s<=25 && s>=0) return 1;

// else return 0;

// }

// //cout<<len<<" "<<s<<endl;

// int &ret = d[len][s];

// if(ret != -1) return ret;

//

// ret = (dp(len-1,s) + dp(len, s-1) - dp(len-1,s-26)) % 1000000007;

// return ret;

//}


int main()

{

cin>>s>>str;

int len = str.length();

for(int i=0; i<=len; i++)

d[i][0] = 1;

for(int i=0; i<=25; i++)

d[1][i] = 1;

for(int l = 2; l<= len; l++)

{

for(int k = 1;  k<= s; k++)

{

if( k >= 26)

d[l][k] = ((d[l-1][k] + d[l][k-1])%1000000007 - d[l-1][k-26] + 1000000007)%1000000007;

else

d[l][k] =( d[l-1][k]+d[l][k-1])%1000000007;

}

}

cout<<d[len][s];

}

'알고리즘 > BOJ문제풀이' 카테고리의 다른 글

boj 14699 관악산 등산  (0) 2017.09.27
345번째 문제 - 3042번 트리플렛  (0) 2017.01.18
1520 내리막길  (0) 2016.12.30
295번째 문제 - 1994 등차수열  (1) 2016.12.28
272번째 문제 - 2494 숫자 맞추기  (0) 2016.12.22