AOJ1011 Finding the Largest Carbon Compound Given Its Longest Chain

問題リンク Finding the Largest Carbon Compound Given Its Longest Chain

  • 概要

炭素だけを結合した化合物の構造の中で、最大鎖長がNであるようなもののうち、炭素の数の最大を求めよ
1 <= N <= 30

  • 解法

Nの偶奇で場合分けすると、炭素の最大数の増え方の規則が見えてきます。
偶奇のどちらの場合も、中心の炭素から伸ばしていく考え方をすると考えやすいです。

(長い間ずっと、最大鎖長がNになるような異性体は何種類あるかという問題だと思ってました)

  • ソース
import java.util.Scanner;

//Finding the Largest Carbon Compound Given Its Longest Chain
public class AOJ1011 {

	void run(){
		Scanner sc = new Scanner(System.in);
		int[] dp = new int[31];
		dp[1] = 1;
		dp[2] = 2;
		int sum = 0;
		for(int i=3;i<=30;i+=2){
			sum+=Math.pow(3, (i-3)/2);
			dp[i] = 1+4*sum;
		}
		sum = 0;
		for(int i=4;i<=30;i+=2){
			sum+=Math.pow(3, (i-4)/2);
			dp[i] = 2+6*sum;
		}
		while(sc.hasNext())System.out.println(dp[sc.nextInt()]);
	}
	
	public static void main(String[] args) {
		new AOJ1011().run();
	}
}