POJ 1737 Connected Graph(JAVA+遞推)


題目鏈接

以前想了好久的一個問題,沒想到熱身賽又出了,果斷悲劇啊。。。看了一下題解,應該反着推啊。。。不聯通的圖可以分為兩個部分k個結點聯通,剩下n-k結點隨便排列就好,這個圖一定是不連通的。然后沿着這個思路做就可以寫出遞推式,這個題目需要高精度,java也太不熟了,語法都不不會。。

 1 import java.io.*;
 2 import java.math.*;
 3 import java.util.*;
 4 import java.text.*;
 5 public class Main
 6 {
 7     public static void main(String[] args)
 8     {
 9         Scanner cin = new Scanner(System.in);
10         BigInteger[] p;
11         BigInteger sec;
12         p = new BigInteger[101];
13         int i,j;
14         long c[][] = new long [51][51];
15         sec = BigInteger.valueOf(2);
16         for(i = 0;i <= 50;i ++)
17         {
18             c[i][0] = 1;
19         }
20         for(i = 1;i <= 50;i ++)//組合數
21         {
22             for(j = 1;j <= 50;j ++)
23             {
24                 c[i][j] = c[i-1][j-1]+c[i-1][j];
25             }
26         }
27         p[1] = BigInteger.valueOf(1);
28         p[2] = BigInteger.valueOf(1);
29         for(i = 3;i <= 50;i ++)
30         {
31             p[i] = sec.pow((i-1)*i/2);
32             for(j = 1;j <= i-1;j ++)
33             {
34                 p[i] = p[i].subtract(p[j].multiply(BigInteger.valueOf(c[i-1][j-1]).multiply(sec.pow((i-j-1)*(i-j)/2))));
35             }
36         }
37         while(cin.hasNext())
38         {
39             i = cin.nextInt();
40             if(i == 0) break;
41             System.out.println(p[i]);
42         }
43     }
44 }

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: