티스토리 뷰

언타이틀/코드리뷰

수이어가기 @kancho

알 수 없는 사용자 2016. 6. 1. 17:53


문제


두번째 수를 임의로 잡습니다.

첫째 수와 둘째 수는 배열의 길이를 확정해 줍니다

그래서 maxCnt = 2로 정해줍니다.


모든 경우마다 배열의 size가 다르므로 시작은 size = 2로  초기화해줍니다.

둘째 수의 선택은 임의로 첫째 수의 절반부터 시작됩니다.

셋째 수부터는 box의 배열에 첫째수와 둘째수의 차를 대입합니다.

n번째수도 앞의 수와 앞앞 수의 차로 해서 반복합니다.


maxCnt보다 큰 배열이 나오면

새로운tmp배열에 담아줍니다.



#include< iostream >
using namespace std;
int main()
{
	int box[20] = { NULL };
	int tmp[20] = { NULL };
	int size, maxCnt = 2;
	int i, k = 0;

	cin >> box[0];
	while (k != box[0] - 1)
	{
		size = 2;
		box[1] = box[0] / 2 + (k++); // 두 번째 수를 임의로 잡음
		for (i = 0; i <= box[0]; ++i)
		{
			box[i + 2] = box[i] - box[i + 1];
			if (box[i + 2] < 0) break;
			else size++;
		}
		if (maxCnt < size)
		{
			maxCnt = size;
			for (i = 0; i < maxCnt; ++i)
				tmp[i] = box[i];
		}
	}
	cout << maxCnt << endl;
	for (i = 0; i < maxCnt; ++i)
		cout << tmp[i] << " ";
	return 0;
}



댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크