184コンテスト

N x 3グリッドをカラー化するスキームの数

 

nx 3のグリッドグリッドがあります。各グリッドに赤、黄、緑のいずれかで色を付け、隣接するグリッドの色が異なることを確認する必要があります(つまり、水平または垂直の側面が同じグリッド)。異なる色)。

グリッドグラフnの行数を示します。

グリッドにペイントされたスキームの数を返します。答えが非常に大きくなる可能性があるため、答えのペア10 ^ 9 + 7の結果を返してください。

 

例1:

入力:n = 1
出力:12
説明:合計12の可能な方法があります。

 

 

例2:

入力:n = 2
出力:54
例3:

入力:n = 3
出力:246
例4:

入力:n = 7
出力:106494
例5:

入力:n = 5000
出力:30228214
 

ヒント:

n == grid.length
grid [i] .length == 3
1 <= n <= 5000

 

/ * * 
 * @param {number} n 
 * @return {number} 
 * / 
// 法の下で結果を見つける= ABAクラスの数+ ABCクラスの数=(3m + 2n)+(2m + 2n)
var numOfWays = function (n){
     if(n === 0 ){
         return 0 
    } else  if(n === 1 ){
         return 12 
    } 
    let temp = 1000000007 ; 
    let repeat = 6 ; 
    let unrepeat = 6 ;
     for(let i = 2; i <= n; i ++ ){ 
        let newrep = repeat * 3%temp + unrepeat * 2%臨時; 
        newunrep =繰り返し* 2%temp +繰り返しなし* 2%temp; 
        repeat = newrep; 
        unrepeat = newunrep。
    } 
    return(repeat + unrepeat)%temp 
};

 

/ * * 
 * @param {number} n 
 * @return {number} 
 * / 
// 私は当時考えていましたが、それは組み合わせですが、2行目の2列目は実際には1ではありません。可能1、可能2、状況がありません。
var numOfWays = function (n){ 
 let arr   = new Array(n);
     for(let i = 0; i <n; i ++ ){ 
        arr [i] = new Array(3 
    } 
    let row = arr.length; 
    let clo = 3 ;
     for(let i = 0; i <row; i ++ ){
         for(let j = 0; j <clo; j ++ ){
             if(i == 0 && j === 0 ){
                arr [i] [j] = 3 ; 
            } else  if(i == 0 && j> 0 ){ 
                arr [i] [j] = 2 ;        
            } else  if(i> 0 && j === 0 ){ 
                arr [i] [j] = 2 ;        
            } else { 
                arr [i] [j] = 1 ; 
            } 
        } 
    } 
    
    let res = 1 ;
    for(let i = 0; i <row; i ++ ){
         for(let j = 0; j <clo; j ++ ){ 
            res* = arr [i] [j]; 
            RES%= Math.pow(10、9)+7 
        } 
    } 
    のための(I = 0せ; I <行; I ++ ){
         ため(J = 0せ; J <CLO; J ++ ){
             場合(iは== 0 && j === 0 ){ 
                arr [i] [j] = 3 ; 
            } else  if(i == 0 && j> 0 ){ 
                arr [i] [j] = 2 ;        
            } else  if(i> 0 && j === 0 ){ 
                arr [i] [j] = 2 ;        
            } その他 {
                arr [i] [j] = 1 ; 
            } 
        } 
    } 
    // arr [0] [0] = 3; 
//      for(let i = 0; i <arr.length; i ++){ 
//          for(let j = 0; j <arr [0] .length; j ++){ 
//              if((arr [i-1] && arr [i-1] [j] ===未定義&& arr [i] && arr [i] [j-1]!==未定義)||(arr [i-1] && arr [i-1] [j]!==未定義&& arr [i] && arr [i] [j-1] === undefined)){ 
//                  arr [i] [j] = 2 
//              } else if(arr [i- 1] && arr [i-1] [j]!==未定義&& arr [i] && arr [i] [j-1]!== undefined){ 
//                    arr [i] [j] = 1     
//             } else if(arr [i-1] && arr [i-1] [j] == undefined && arr [i] && arr [i] [j-1] == undefined){ 
//                  arr [i] [ j] = 3   
//              } 
            
//          } 
//      } 
    return res; 
};

 

ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/number-of-ways-to-paint-nx-3-grid
著作権は控除ネットワークに属しています 商用転載の正式な許可書に連絡し、非商用転載のソースを示してください。

おすすめ

転載: www.cnblogs.com/zhangzs000/p/12728857.html