Try   HackMD
tags: tgirc早修book

Ch.05 題目練習

一維陣列

題目

  1. Zerojudge d660: 11764 - Jumping Mario
  2. Zerojudge b558: 求數列第 n 項
  3. Zerojudge a253: 王老先生的磨菇田
  4. Kattis Reduced ID Numbers
  5. Zerojudge a240: 第一題:1 / 17 小數第 n 位
  6. CSES Missing Number
  7. Kattis Free Food
  8. Kattis Hot Hike
題解
  1. Zerojudge d660: 11764 - Jumping Mario
#include <iostream> using namespace std; int wall[55]; int main(){ int t; cin>>t; int k=1; //計算第幾個 Case while(t--){ //執行 t 次 int n; cin>>n; for(int i=0;i<n;i++){ cin>>wall[i]; //輸入每個牆壁高度 } int up=0,down=0; for(int i=0;i<n-1;i++){ if(wall[i]<wall[i+1]){ //計算往上跳的次數 up++; } if(wall[i]>wall[i+1]){ //計算往下跳的次數 down++; } } cout<<"Case "<<k<<": "<<up<<' '<<down<<'\n'; k++; //輸出完是第幾個 Case 後,每輪再往上加 1 } return 0; }
  1. Zerojudge b558: 求數列第 n 項
    (待補)

二維、多維陣列

題目

  1. Zerojudge a015: 矩陣的翻轉
  2. Toj 114 / 我閉著眼
  3. Zerojudge d625: 踩地雷真好玩
  4. Zerojudge b965: 第 2 題 矩陣轉換
  5. UVA Q118 Mutant Flatworld Expolrers
  6. Kattis This Ain't Your Grandpa's Checkerboard
  7. Kattis Cudoviste
題解
  1. Toj 114 / 我閉著眼
#include <iostream> using namespace std; int ary[8][9]; int main(){ int i,j; for(i=1;i<=5;i++){ for(j=1;j<=6;j++){ cin>>ary[i][j]; } } int k=0; for(i=1;i<=5;i++){ for(j=1;j<=6;j++){ if(ary[i][j] == ary[i][j-1] && ary[i][j] == ary[i][j+1]){ k++; } else if(ary[i][j] == ary[i-1][j] && ary[i][j] == ary[i+1][j]){ k++; } } } if(k!=0) cout<<"Yes\n"; else cout<<"No\n"; return 0; }
  1. Kattis Cudoviste
#include <bits/stdc++.h> using namespace std; char ary[60][60]; int ans[5]; int main(){ int r,c; cin>>r>>c; int i,j; for(i=1; i<=r; i++){ for(j=1; j<=c; j++){ cin>>ary[i][j]; } } int b[5]={0,1,1,0,0}; int p=0; for(i=1; i<r; i++){ for(j=1; j<c; j++){ for(int k=0;k<4;k++){ if(ary[i+b[k]][j+b[k+1]] == '#'){ p=-1; break; } else if(ary[i+b[k]][j+b[k+1]] == 'X') p++; } if(p>=0) ans[p]++; p=0; } } for(i=0;i<5;i++){ cout<<ans[i]<<"\n"; } return 0; }