白駿9461号:波の半数列


リンク:https://www.acmicpc.net/problem/9461

問題を読む


波の半数列というものがあるそうです.あ、列を数えてルールを見つけました.dp[i] = dp[i-2] + dp[i-3]になります
でも絵を見てどうして絵があるの?三角形の交点が確認されたら、dp[i] = dp[i-1] + dp[i-5]に持って行きます.

コード#コード#

#include<iostream>
using namespace std;

long long dp[101];

long long solve(int N) {
	for (int j = 6; j <= N; j++) {
		dp[j] = dp[j - 1] + dp[j - 5];
	}
	return  dp[N]; 
}

int main() {
	int N, T;
	cin >> T;

	dp[0] = dp[1] = dp[2] = dp[3] = 1;
	dp[4] = dp[5] = 2;

	for (int i = 0; i < T; i++) {
		cin >> N;
		cout << solve(N) << endl;
	}
	return 0;
}

ぶんせき


本来は関数を単独で減算し、演算後の値だけを取っていたのですが、資料型の長さのため、誤って処理されたのかもしれません.だから中に入れて...
一つ目は資料型の長さのせいで、ひどく間違っていて、次は点火式を間違えたからです.最後の間違いの原因は何なのか分からない.
最后にエラーの原因はあなたが関数returnを修正していないことです.^^答えはlong longで、returnはintなので、エラーしかありません...資料型を修正するときは気をつけてください.long long solve(int N);は、以下のように関数を宣言する必要があります.