Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.regex.*;
- import java.text.*;
- import java.math.*;
- public class PalindromfulString
- {
- long[][] c;
- long[] f;
- int[] a;
- public long count(int n, int m, int k)
- {
- f = new long[12];
- f[0] = 1;
- for (int i = 1; i <= 11; ++i) {
- f[i] = f[i - 1] * i;
- }
- c = new long[27][27];
- for (int i = 0; i <= 26; ++i) {
- for (int j = 1; j < i; ++j) {
- c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
- }
- c[i][0] = c[i][i] = 1;
- }
- a = new int[n];
- return rec(0, 0, m, k);
- }
- long rec(int u, int v, int m, int k) {
- if (u == a.length) {
- int count = 0;
- loop: for (int i = 0; i + m <= a.length; ++i) {
- for (int j = 0; j < m; ++j) {
- if (a[i + j] != a[i + m - j - 1]) {
- continue loop;
- }
- }
- count++;
- }
- if (count >= k) {
- return c[26][v] * f[v];
- } else {
- return 0;
- }
- }
- long ret = 0;
- for (int t = 0; t <= v; ++t) {
- a[u] = t;
- ret += rec(u + 1, Math.max(v, t + 1), m, k);
- }
- return ret;
- }
- }
- //Powered by KawigiEdit 2.1.4 (beta) modified by pivanof!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement