模拟 CSU 1562 Fun House

 

题目传送门

 1 /*  2  题意:光线从 '*' 发射,遇到 '/' 或 '\' 进行反射,最后射到墙上,将 'x' 变成 '&'  3  模拟:仔细读题,搞清楚要做什么,就是i,j的移动,直到撞到墙,模拟一下一次AC,不要被题目吓怕了:)  4 */  5 #include <cstdio>  6 #include <iostream>  7 #include <algorithm>  8 #include <stack>  9 #include <cmath>  10 #include <cstring>  11 #include <vector>  12 using namespace std;  13  14 const int MAXN = 1e4 + 10;  15 const int INF = 0x3f3f3f3f;  16 char g[22][22];  17  18 int main(void) //CSU 1562 Fun House  19 {  20 //freopen ("B.in", "r", stdin);  21  22 int n, m, cas = 0;  23 while (scanf ("%d%d", &m, &n) == 2)  24  {  25 if (n == 0 && m == 0) break;  26  27 for (int i=0; i<n; ++i)  28  {  29 scanf ("%s", &g[i]);  30  }  31  32 printf ("HOUSE %d\n", ++cas);  33  34 int sx = -1, sy = -1;  35 int num = 0;  36 for (int i=0; i<n; ++i)  37  {  38 for (int j=0; j<m; ++j)  39  {  40 if (g[i][j] == '*')  41  {  42 if (j == 0) num = 1;  43 else if (j == m-1) num = 2;  44 else if (i == 0) num = 3;  45 else if (i == n-1) num = 4;  46 sx = i; sy = j;  47 break;  48  }  49  }  50  }  51  52 while (1)  53  {  54 if (num == 1)  55  {  56 ++sy;  57 if (g[sx][sy] == '/') num = 4;  58 else if (g[sx][sy] == '\\') num = 3;  59 else if (g[sx][sy] == 'x')  60  {  61 g[sx][sy] = '&'; break;  62  }  63  }  64 else if (num == 2)  65  {  66 --sy;  67 if (g[sx][sy] == '/') num = 3;  68 else if (g[sx][sy] == '\\') num = 4;  69 else if (g[sx][sy] == 'x')  70  {  71 g[sx][sy] = '&'; break;  72  }  73  }  74 else if (num == 3)  75  {  76 ++sx;  77 if (g[sx][sy] == '/') num = 2;  78 else if (g[sx][sy] == '\\') num = 1;  79 else if (g[sx][sy] == 'x')  80  {  81 g[sx][sy] = '&'; break;  82  }  83  }  84 else if (num == 4)  85  {  86 --sx;  87 if (g[sx][sy] == '/') num = 1;  88 else if (g[sx][sy] == '\\') num = 2;  89 else if (g[sx][sy] == 'x')  90  {  91 g[sx][sy] = '&'; break;  92  }  93  }  94  }  95  96 for (int i=0; i<n; ++i)  97  {  98 for (int j=0; j<m; ++j)  99  { 100 printf ("%c", g[i][j]); 101  } 102 puts (""); 103  } 104  } 105 106 return 0; 107 } 108 109 /* 110 HOUSE 1 111 xxxxxxxxxxx 112 x../..\...x 113 x..../....x 114 *../......x 115 x.........x 116 xxxxxx&xxxx 117 HOUSE 2 118 xxxxx 119 *...& 120 x...x 121 x...x 122 xxxxx 123 HOUSE 3 124 xxxxx 125 x./\x 126 *./.x 127 x..\& 128 xxxxx 129 HOUSE 4 130 xxx*xx 131 x/...x 132 x....x 133 x/./.& 134 x\./.x 135 xxxxxx 136 HOUSE 5 137 xxxxxxxxxx 138 x.../\...x 139 x........x 140 x........x 141 &.../\..\x 142 *...\/../x 143 x........x 144 x........x 145 x...\/...x 146 xxxxxxxxxx 147 */

 

你可能感兴趣的:(模拟)