Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "On-Screen Keyboard"
https://onlinejudge.u-aizu.ac.jp/problems/1633
・スクリーンキーボード
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume16 : 1633 - On-Screen Keyboard
/* Aizu Online Judge in C++ #Volume16 : 1633 - On-Screen Keyboard https://onlinejudge.u-aizu.ac.jp/problems/1633 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll h,w,x[300],y[300]; string s; int main(void){ while(cin>>h>>w,h){ for(ll i=0;i<h;i++){ string t; cin>>t; for(ll j=0;j<w;j++){ x[t[j]]=i; y[t[j]]=j; } } ll ans=0,nx=0,ny=0; cin>>s; for(ll i=0;i<s.size();i++){ ans+=abs(nx-x[s[i]])+abs(ny-y[s[i]])+1; nx=x[s[i]]; ny=y[s[i]]; } cout<<ans<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/