kotonoha_pcg@ぷろこんにっき

ここ(http://kotonoha-pcg.hatenablog.com/)の別館です、競プロの話が殆どです。最近mdモードに変えて一気に使い勝手が変わりました。

ALDS_1_A

ALDS 1Aやっと解けました.結果として,やっぱり最初から問題文に記載してあった擬似コードを「よく見て」書いたらよかったと思った.
 最初に大分前に書いたバブルソートと選択ソートについての記事,あれの選択ソートを参考にほぼそのまま写した結果,最終的にソートはされるけれどよく意味が分からない・・・というより,条件を満たさないコードが出来上がってしまった.ので,おとなしく擬似コードを使って書いたら,あっさりと通った.

#include <iostream>
using namespace std;
int main(){
	int n=0,a[1000]={0};
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
 for(int i=0;i<n;i++) if(i==n-1){cout<<a[i]<<endl;}else{cout<<a[i]<<" ";}

	int i,j,v,cnt;
 for(int i=1;i<n;i++){
		cnt++;
		v=a[i];
		j=i-1;
		while((j>=0)&&(a[j]>v)){
			a[j+1]=a[j];
			j--;
		}
		a[j+1]=v;
		for(int g=0;g<n;g++){
			 
			if(g==n-1){cout<<a[g]<<endl;}else{cout<<a[g]<<" ";}
		}
	}
 return 0;
}

 このコード,最初提出したらWAになって「あれ???」となって暫く放置してたのですが,問題文読み返してるときに

for(int i=0;i<=n-1;i++)

じゃなくてこれ

for(int i=1;i<n;i++)

じゃね?
となったので書き換えたら,見事一発で通った.明らかに早まりすぎてるので,落ち着いて問題読んで適切なコードを書きたいです.


そもそもいうと,これ 選択ソートじゃなくて挿入ソートなんですよね(Insertionで気づくべきだった)...