紫書——The Dole Queue UVA - 133
阿新 • • 發佈:2018-11-09
題解:
這道題目書上有題解,水題直接給出程式碼orz
主要是兩個人都會挑選,判斷好方向和次數就行(注意點:兩個挑選完後才判斷和刪除人,不要挑選一個就刪除一個)
#include <bits/stdc++.h> using namespace std; int n,k,m; int is[25]; //記錄該位置是否有人 int fin_peo(int dic,int pos,int jmp) { //是哪一個人和上一次的方向 ,跳幾格 for(int i = 0; i < jmp; i++) { do{ pos += dic; if(pos > 20) pos = 1; if(pos == 0) pos = 20; }while(!is[pos]); } return pos; } int main() { //freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); while(scanf("%d%d%d",&n,&k,&m) == 3 && n) { memset(is,-1,sizeof(int)*(n+1)); //不算0 int kp = 0,mp = n+1; while(n) { kp = fin_peo(1,kp,k); mp = fin_peo(-1,mp,m); is[kp] = 0; is[mp] = 0; if(kp == mp) { printf("%3d",kp); n--; } else { printf("%3d%3d",kp,mp); n = n-2; } if(n) printf(","); } printf("\n"); } return 0; }