PKU 1806 Manhattan 2025

http://poj.org/problem?id=1806

(u*2+1)*(u*2+1)*(u*2+1)の3次元空間で中心から距離を出力する。
距離u以上は無視

サンプルをみて、何をすればいいのか理解するような問題だと思いました。

void solve(int ca){

  int n;
  cin >> n;
  if(n>9) return;
  printf("Scenario #%d:\n",ca);  
  rep(i,n*2+1){
    printf("slice #%d:\n",i+1);
    rep(j,n*2+1){
      rep(k,n*2+1){
        int dist=abs(n-i)+abs(n-j)+abs(n-k);
        if(dist>n) cout << '.';
        else cout << dist;
      }
      cout << endl;
    }
  }
  cout << endl;
}

main(){
  int t;
  cin >> t;
  rep(i,t) solve(i+1);
}