プログラミングについて 私はAOJという競技プログラミングの問題を解いていたのですが、とある問&#8… | 質問の答えを募集中です! プログラミングについて 私はAOJという競技プログラミングの問題を解いていたのですが、とある問&#8… | 質問の答えを募集中です!

プログラミングについて 私はAOJという競技プログラミングの問題を解いていたのですが、とある問…

プログラミング

プログラミングについて
私はAOJという競技プログラミングの問題を解いていたのですが、とある問題に引っかかりどうしてもわからないのでご教授願いたいです。
問題番号は0544ですごろくという問題なのですが、テストケースを通しても問題がないため、どこが間違っているのかわかりません。
言語はC++です。

#include
#include
using namespace std;

int main(){
int turn;
int stepn = 0;
int sain = 0;
vector outp;
for(turn = 0; ;turn++){
cin >> stepn;
cin >> sain;
if(stepn == 0 && sain == 0){
break;
}
int pos = 0;
int g = 0;
vector step(stepn,0);
vector sai(sain,0);
sai.resize(sain,0);
for(int n = 0;n> step[n];
}
for(int n = 0;n> sai[n];
}
for(int t = 0;t

  1. 匿名 より:

    >テストケースを通しても問題がないため、どこが間違っているのかわかりません

    ???
    質問文オリジナルコードのまま、
    http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0544
    にある 入力例1, 入力例2 のデータ与えたら、
    待っても終了しませんでした
    10秒くらいがまんして Ctrl+C しましたので、
    無限ループなのかどうかはわかりませんが。

    >どうやらstep配列を参照していた部分がまずかったようです
    で直ったということかしら?

    正しく動くコードなのか否か、定かではないので、
    なんともいえないですけど、コード拝見して
    ・なんでvector3つ要るのかな?
    ・こんなに難しく書かないといけないのかしら?
    と、思いました。

    AOJは過去自分でトライしたことはありません。
    この質問契機で初めて問題文見ましたし、かんちがい&&バグあり
    かもしれませんが、解いてみました。
    他人の考え方も見てみようかと思うなら、読んでみてください。
    入力例1, 2の出力結果は、サイトにあるのと合ってました。

    #include
    #include

    int main() {
    ___ int n, m;
    ___ std::cin >> n >> m;
    ___ std::vector board(n);

    ___ for (auto& b : board)
    ___ ___ std::cin >> b;

    ___ int pos, try_count;
    ___ for (pos = try_count = 0; m > 0 && pos < (n-1); --m, ++try_count) { ___ ___ int dice; ___ ___ std::cin >> dice;
    ___ ___ pos += dice;
    ___ ___ if (pos < n) ___ ___ ___ pos += board[pos]; ___ } ___ std::cout << try_count << std::endl; ___ return 0; }

  2. 匿名 より:

    まだプログラムをやり始めて間もなく、拙いコードになってしまっているということでご理解ください。
    私の最初のコードではstep[pos]で配列外を参照する可能性があったのでそこを直した、ということです。
    取り敢えずそれで正解はしたのでもう少し処理時間を短くする方法はないか、という質問です。お手数をおかけして申し訳ないです。



 ⬇人気の記事!⬇

タイトルとURLをコピーしました