hdu2045,RPG 문제는 한 줄로 늘어선 n개의 네모난 칸이 있고 빨간색(Red), 핑크(Pink), 녹색(Green) 세 가지 색으로 칸마다 한 색씩 칠한다. 칸마다 한 색씩 칠한다. 서로 인접한 칸마다 같은 색을 칠할 수 없고 앞뒤 두 칸도 다른 색을 칠해야 한다. 모든 요구를 만족시키는 칠법을 구한다.

1043 단어 법칙&사유
설명:
한 줄로 늘어선 n개의 네모난 칸이 있는데 빨간색(Red), 핑크(Pink), 녹색(Green) 세 가지 색으로 칸마다 한 색씩 칠한다. 칸마다 한 색씩 칠한다. 그 어떠한 인접한 네모난 칸도 같은 색일 수 없고 앞뒤 두 칸도 다른 색을 칠해야 한다. 모든 요구를 만족시키는 칠법을 구한다.이상은 유명한 RPG 난제입니다.
Input
입력 데이터는 여러 개의 테스트 실례를 포함하고 각 테스트 실례는 한 줄을 차지하며 하나의 정수 N으로 구성된다(0
Output
모든 테스트 실례에 대해 요구를 만족시키는 페인트를 모두 출력하십시오. 모든 실례의 출력은 한 줄을 차지합니다.
Sample Input
1 2
Sample Output
3 6
문제 해결 방법:
1,2,3을 입력할 때 3, 6,6을 n>3의 경우로 초기값을 설정합니다.현재 n-1개의 칸은 합법적이다. 즉, 첫 번째와 n-1개의 칸은 색깔이 다르다. f(n)=f(n-1)2.현재 n-1칸은 합법적이지 않고 n칸을 바르면 합법적이다. 즉, 첫 번째 칸과 n-1칸의 색깔이 같기 때문에 발생하는 비합법적이기 때문에 n-2칸의 색깔은 첫 번째 칸의 색깔과 다르다. f(n-1)=f(n-2), f(n)=2*f(n)=2*f(n-1)
#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
	int a = 3, b = 6, c = 6;
	int n;
	cin >> n;
	for(int i = 3; i < n; i++)
	{
		int t = c;
		c = c + b * 2;
		a = b;
		b = t;
	}

	cout << c;
}

좋은 웹페이지 즐겨찾기