daily pastebin goal
47%
SHARE
TWEET

winger

a guest Feb 1st, 2011 163 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.*;
  2. import java.util.regex.*;
  3. import java.text.*;
  4. import java.math.*;
  5.  
  6.  
  7. public class PalindromfulString
  8. {
  9.         long[][] c;
  10.         long[] f;
  11.         int[] a;
  12.  
  13.         public long count(int n, int m, int k)
  14.         {
  15.                 f = new long[12];
  16.                 f[0] = 1;
  17.                 for (int i = 1; i <= 11; ++i) {
  18.                         f[i] = f[i - 1]  * i;
  19.                 }
  20.                 c = new long[27][27];
  21.                 for (int i = 0; i <= 26; ++i) {
  22.                         for (int j = 1; j < i; ++j) {
  23.                                 c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
  24.                         }
  25.                         c[i][0] = c[i][i] = 1;
  26.                 }
  27.                 a = new int[n];
  28.                 return rec(0, 0, m, k);
  29.         }
  30.        
  31.         long rec(int u, int v, int m, int k) {
  32.                 if (u == a.length) {
  33.                         int count = 0;
  34.                         loop: for (int i = 0; i + m <= a.length; ++i) {
  35.                                 for (int j = 0; j < m; ++j) {
  36.                                         if (a[i + j] != a[i + m - j - 1]) {
  37.                                                 continue loop;
  38.                                         }
  39.                                 }
  40.                                 count++;
  41.                         }
  42.                         if (count >= k) {
  43.                                 return c[26][v] * f[v];
  44.                         } else {
  45.                                 return 0;
  46.                         }
  47.                 }
  48.                 long ret = 0;
  49.                 for (int t = 0; t <= v; ++t) {
  50.                         a[u] = t;
  51.                         ret += rec(u + 1, Math.max(v, t + 1), m, k);
  52.                 }
  53.                 return ret;
  54.         }
  55.        
  56.  
  57. }
  58. //Powered by KawigiEdit 2.1.4 (beta) modified by pivanof!
RAW Paste Data
Pastebin PRO 'MAY MADNESS'!
Get 60% OFF Pastebin PRO accounts!
Top