1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AtCoder Educational DP Contest A - Frog 1

Last updated at Posted at 2019-06-24

はじめに

AtCoder初心者が勉強していく記事です。
初学者の時にわからなかったことって、慣れてくると忘れてしまうかとおもいます。
後の初学者の方のためにもくどいくらいにコメントを書いていきます。

問題を解く

動的計画法(DP: Dynamic Programming)関連の問題が沢山集まったEducational DP Contestの問題を解いていきます。
今回はこちら。
A - Frog 1

//A - Frog 1
#include <iostream>
using namespace std;

int main(){
  int n;
  //int nを入力
  cin >> n;

  //足場iにおける高さを入力
  int h[n];
  for (int i = 0; i < n; i++) {
    cin >> h[i];
  }

  //足場iにおけるコストの最小値
  int dp[n];
  //スタート時点ではジャンプしていないのでコストゼロ
  dp[0] = 0;
  //足場1に行く方法は足場0から+1でジャンプする1通りのみ
  dp[1] = abs(h[1] - h[0]);

  /*足場2以降に関して計算。
  足場iに到達する方法は
  ①足場i-2から+2のジャンプ or ②足場i-1から+1のジャンプ
  */

  for(int i = 2; i < n; i++){
    //①の場合に関して計算しdp[i]に代入
    dp[i] = dp[i - 1] + abs(h[i] - h[i-1]);
    //さらに②の場合も計算。①と②を比較した際の最小値(min)が足場iに到達するための最小コスト
    dp[i] = min(dp[i], dp[i - 2] + abs(h[i] - h[i-2]));
  }

  //最後の足場におけるコストを出力。
  cout << dp[n-1] << endl;
  return 0;
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?