Leetcode 957 N 天後的牢房(暴力)

2022-09-20 06:57:09 字數 1266 閱讀 4636

8 間牢房排成一排,每間牢房不是有人住就是空著。

每天,無論牢房是被占用或空置,都會根據以下規則進行更改:

如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。

否則,它就會被空置。

(請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。)

我們用以下方式描述監獄的當前狀態:如果第 i 間牢房被占用,則 cell[i]1,否則 cell[i]0。

根據監獄的初始狀態,在 n 天後返回監獄的狀況(和上述 n 種變化)。

示例 1:

輸入:cells = [0,1,0,1,1,0,0,1], n = 7

輸出:[0,0,1,1,0,0,0,0]

解釋:下表概述了監獄每天的狀況:

day 0: [0, 1, 0, 1, 1, 0, 0, 1]

day 1: [0, 1, 1, 0, 0, 0, 0, 0]

day 2: [0, 0, 0, 0, 1, 1, 1, 0]

day 3: [0, 1, 1, 0, 0, 1, 0, 0]

day 4: [0, 0, 0, 0, 0, 1, 0, 0]

day 5: [0, 1, 1, 1, 0, 1, 0, 0]

day 6: [0, 0, 1, 0, 1, 1, 0, 0]

day 7: [0, 0, 1, 1, 0, 0, 0, 0]

示例 2:

輸入:cells = [1,0,0,1,0,0,1,0], n = 1000000000

輸出:[0,0,1,1,1,1,1,0]

cells.length == 8

cells[i] 的值為 0 或 1

1 <= n <= 10^9

注意到變換的總共只有8位數,且開頭結尾除了一開始可能為1以後必然為0,那麼必然在64次以內發生迴圈。直接暴力找出迴圈節即可。

class solution 

for(int i = 1; ; i++) else

tmp <<= 1;

tmp += status[i][j];

}if(vis[tmp]) else

}vectorans;

cout << pos << " " << rd << endl;

if(n <= pos + rd - 1)

} else

}return ans;

}};// [1,1,0,1,1,0,1,1]

// 6

Leetcode 957 N天後的牢房

8 間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。我們用以下方式描述監...

LeetCode 957 N天後的牢房

題目描述 8 間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。我們用以下...

Leetcode 957 N天後的牢房

leetcode 957.n天後的牢房 8間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法...