2016年8月10日 星期三

滾球遊戲(C++參考版)



參考程式碼:

#include <iostream>
#include <cstring>
using namespace std;
const int MaxN = 500;
int gb[MaxN][MaxN];  // 遊戲盤數值
int bc[MaxN][MaxN];  // 各格球數
int n , n2 ;
void setgb(int r, int c)
{
int t=1 , p;
while( t< n2 )
{
gb[r][c] = t;
p = ( r*n + c + t++ ) % n2;  // +t 後,t再+1
r = p/n;  c=p%n;
while( gb[r][c] !=0 )
{
p = (p+1)%n2; //找 下一 空格; 
r = p/n;  c=p%n;
}
}
gb[r][c] = t;
}
int dr[] = {-1, 1, 0, 0};
int dc[] = { 0, 0,-1, 1};
void putball(int r, int c)  // 在(r,c)放入1球,往低處走,停在(ur,uc),該格球數+1
{
int m=gb[r][c];
int ur =r , uc=c;
for(int d=0; d<4; ++d)
{
int nr=r+dr[d] , nc=c+dc[d];
if( nr<0 || nr>=n || nc<0 || nc>=n ) continue;
if( gb[nr][nc] < m ) 
{
ur=nr;  uc=nc;  m=gb[nr][nc];
}
}
if( ur==r && uc==c )  bc[r][c]++; 
else putball(ur,uc);  // 四周有更低格,繼續往下走 {遞迴}
}
void print(int x[][MaxN] )  '印出陣列內容
{
  int i,j;
for(i=0; i<n; ++i)

  for(j=0; j<n; ++j)
    cout << x[i][j] <<' ';
  cout << endl;
}

}
int main(void)
{
   int r,c,p,t;
   cin >> t;  //共有 t 組
   while( t-- ) // t 不為0 時繼續
   {
cin >> n >> r >> c ;
memset(gb,0,sizeof(gb));
memset(bc,0,sizeof(bc));
n2 = n*n;
setgb(r,c);  // 從(r,c)開始算,產生遊戲盤 gb
print(gb);   // 測試列印用
for(r=0; r<n; ++r)
 for(c=0; c<n; ++c)
   putball(r,c) ;  // 在(r,c)放1球,往低處走停在最低處,該處球數+1
print(bc);   // 測試列印用
// 還要再補一段,印出兩個數字    
   }
   return 0;
}

Related Posts:

  • APCS 105年3月題1-成績指標(C++參考)APCS Y16M3-Q1 成績指標  問題描述   一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。   請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找出不及格中… Read More
  • To P2 之 a010質因數分解參考程式碼 ,最後有另一組建質數表的 genp程式 // a010 #include <iostream> #include <cstring> #include <vector> #include <cmath> #define maxn 46340… Read More
  • APCS 105年3月題2-矩陣轉換(C++參考)APCS Y16M3-Q2 -矩陣轉換  問題描述 輸入格式:原題單測資,本參考改為多測資,讀至EOF, 每筆測資說明如下:第一行有三個介於 1 與 10 之間的正整數  R, C, M 。 接下來有  R  行(line)是矩陣 B 的內… Read More
  • 104M-P11 質因數分解(CPP版參考)參考程式碼1 #include <iostream> #include <cstring> // memset #include <vector> // vector #include <cmath>  // sqrt /* size(25… Read More
  • Z3A、P3A 9/17 進度Z3A 請將9/4的題目練會,另題單未測部份 9/17要測一下 P3A 9/17要講及練  104 考古題, 另明後天會公布 APCS四題的參考解… Read More

0 意見:

張貼留言