[leetcode] 276. Paint Fence 문제 해결 보고서
There is a fence with n posts, each post can be painted with one of the k colors.
You have to paint all the posts such that no more than two adjacent fence posts have the same color.
Return the total number of ways you can paint the fence.
Note: n and k are non-negative integers.
사고방식: 원래 서로 인접한 두 개는 같은 색깔로 염색할 수 없다고 생각했는데, 나중에 보니 연속할 수 없는 세 개는 같은 색깔이다.알이 아픈 문제야.
매번 두 가지 상황이 있다.
1. 현재 이 색상이 전번과 같다면 전번과 전번 메일박스 색상이 다르다. 이 경우 염색 방안은 전번과 전번이 다른 색상일 때의 개수이다.
2. 현재의 메일박스 색깔이 이전과 다르다면 그 염색 방안은 이전 메일박스가 이 색깔의 염색 방안의 합이 아니다. 즉, (k-1)*sum
이렇게 해서 우리는 모든 메일박스에서 한 가지 색을 염색하는 방안을 계산한다. 왜냐하면 k개의 염색 방안이 있기 때문에 마지막에 k를 곱한다.
코드는 다음과 같습니다.
class Solution {
public:
int numWays(int n, int k) {
if(n == 0 || k == 0) return 0;
if(n <= 2) return pow(k, n);
int same = 1, notSame = k-1;
for(int i = 2; i< n; i++)
{
int tem = same;
same = notSame;
notSame = (tem + notSame)*(k-1);
}
return (same + notSame)*k;
}
};
참조:https://leetcode.com/discuss/56172/c-implementation-constant-memory-and-o-n-time
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.