标签:png while http out 正方形 oid lan 最好 一个
题目一上来就看见一个:细胞自动机,让我想到了以前用过的有限自动机。
但是最终我决定我的算法的还是这句话:
因为难以预测,所以最好的算法就是模拟,我没有了解过是否有数学公式可以描述,百度百科是这样讲的:
这里我使用递归进行模拟。
1 /* 2 * 目前来看是一个模拟的题目... 3 */ 4 #include<iostream> 5 #include<cstring> 6 #include<map> 7 #include<cstdio> 8 9 using namespace std; 10 11 int m, n, x, y, k; 12 char s; 13 int a[101][101]; 14 char w[4] = {‘U‘, ‘R‘, ‘D‘, ‘L‘}; 15 map<char, int> lr; 16 17 void move(int x, int y, char s, int k) 18 { 19 if(k == 0){ 20 cout<<x<<" "<<y<<‘\n‘; 21 return; 22 } 23 if(a[x][y]){ // 黑 24 s = w[(lr[s]+1)%4]; 25 a[x][y] = 0; 26 } 27 else{ 28 s = (lr[s] == 0)?‘L‘:w[(lr[s]-1)%4]; 29 a[x][y] = 1; 30 } 31 switch(s) 32 { 33 case ‘U‘:move(x-1, y, s, --k);break; 34 case ‘D‘:move(x+1, y, s, --k);break; 35 case ‘L‘:move(x, y-1, s, --k);break; 36 case ‘R‘:move(x, y+1, s, --k);break; 37 default:break; 38 } 39 return; 40 } 41 42 int main() 43 { 44 lr[‘U‘] = 0; lr[‘R‘] = 1; 45 lr[‘D‘] = 2; lr[‘L‘] = 3; 46 m = n = 0; 47 while(cin>>m>>n) 48 { 49 memset(a, 0, sizeof(a)); 50 for(int i=0;i<m;i++) 51 for(int j=0;j<n;j++){ 52 cin>>a[i][j]; 53 } 54 k = x = y = 0; 55 cin>>x>>y>>s>>k; 56 move(x, y, s, k); 57 } 58 59 return 0; 60 }
2019-02-09
19:07:35
标签:png while http out 正方形 oid lan 最好 一个
原文地址:https://www.cnblogs.com/mabeyTang/p/10357858.html