オファー証明安全性[10]、長方形のフットプリント

タイトル説明

我々は、2使用できる横の小さな四角形1または垂直より大きな長方形を覆います。N 2の使用する大きな長方形2 * n個の重複のない小さな四角形1カバレッジ、どのように多くの方法の合計は?

問題への解決策:再帰
1  // 同様のフィボナッチ再帰
2      パブリック 静的 INT RectCover(INT ターゲット){
 3          IF(目標<= 0 ){
 4。             復帰 0 ;
 5          }  IF(ターゲット== 1つの==ターゲット|| 2 ) {
 6。             戻りターゲット;
 7          } {
 8。             復帰 RectCover + RectCover(ターゲット-2(-target 1));
 9          }
 10      }
問題の解決II:非再帰的
1つの 公共 静的 INT RectCover01(INT ターゲット){
 2          であれば(目標<= 2 ){
 3              戻りターゲット。
4          }
 5          のint 1 = 1 6          INT 2 = 2 7          int型の結果= 0 8          INT I = 3; I <=ターゲット; I ++ ){
 9              結果= 1 + 2。
10              1 = 2。
11              2 = 結果。
12         }
 13          リターン結果。
14      }

テスト:

1  公共 静的 ボイドメイン(文字列[]引数){
 2          スキャナスキャナ= 新しいスキャナ(System.in)。
3          しばらく(scanner.hasNext()){
 4              INT ANINT = scanner.nextInt()。
5              int型のカバー= RectCover(ANINT)。
6              のSystem.out.println(カバー)。
7          }
 8      }
 9输入:0 1 2 3 4 5 6 7 8 9 10
 10输出:0 1 2 3 5 8 13 21 34 55 89

 

おすすめ

転載: www.cnblogs.com/Blog-cpc/p/12486406.html