티스토리 뷰
문제
두번째 수를 임의로 잡습니다.
첫째 수와 둘째 수는 배열의 길이를 확정해 줍니다
그래서 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; }
댓글