957.N天后的牢房
运行结果可以看出,按照题目要求,8位二进制数循环周期为14;
class Solution {
public:
vector<int> prisonAfterNDays(vector<int>& cells, int N)
{
int j=0;
dis(cells,j);
vector<vector<int>>count;
while (j<30)
{
vector<int>tmp(cells.size());
for (int i = 1; i < cells.size()-1; ++i)
{
if(!(cells[i-1]^cells[i+1]))
{
tmp[i]=1;
} else
tmp[i]=0;
}
cells=tmp;
j++;
dis(cells,j);
count.push_back(cells);
}
return count[(N-1)%14];
}
void dis(vector<int>cells,int day)
{
cout<<"Days: "<<day<<" ";
for (int i = 0; i <cells.size(); ++i) {
cout<<cells[i]<<" ";
}
int Dec=0;
for (auto i=cells.rbegin();i!=cells.rend();++i)
{
Dec+=pow(2,distance(cells.rbegin(),i))**i;
}
cout<<Dec;
cout<<endl;
}
};