d****e 发帖数: 499 | 1 大概意思是有八个一排的监牢,每个有active和inactive状态,如果某一个牢房的左右
临都是active或inactive, 这个牢房第二天变active,否则变inactive, 计算n天后的牢
房状态
state =[bool]
calcStates(curState: [bool], days: int) {
// output the state of each cell after specific days
} |
P******a 发帖数: 1379 | 2 除了硬算有啥其他办法吗?
更新:2的8次方个状态,所以256个状态应当分割成若个联通图,每个联通图应当就是
一个单向循环的loop。如果函数会被反复调用,可以把所有状态都预算一遍,每次调用
就直接查表。
:
:大概意思是有八个一排的监牢,每个有active和inactive状态,如果某一个牢房的左
右临都是active或inactive, 这个牢房第二天变active,否则变inactive, 计算n天后的
牢房状态 |
d***l 发帖数: 7 | |
t******d 发帖数: 1383 | 4 public void process(int[] arr) {
int front = 0;
int i = 0;
for (; i < arr.length - 1; i++) {
if ((front == 1 && arr[i+1] == 0) || (front == 0 && arr[i+1] ==
1)) {
front = arr[i];
arr[i] = 1;
} else {
front = arr[i];
arr[i] = 0;
}
}
if (front == 1)
arr[i] = 1;
else
arr[i] = 0;
}
public void process(int[] arr, int days) {
while (days > 0) {
process(arr);
days--;
}
} |
p*****2 发帖数: 21240 | 5
头尾连起来?
【在 d***l 的大作中提到】 : 边上的两个怎么说?
|
t*********r 发帖数: 63 | 6 第一直觉状态压缩加记忆搜索,某一天一定会出现重复的状态,然后直接mod到这一天
所需要的时间 |
h**6 发帖数: 4160 | |