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
著作権は控除ネットワークに属しています 商用転載の正式な許可書に連絡し、非商用転載のソースを示してください。