日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVA 220 Othello

發布時間:2025/4/5 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA 220 Othello 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:輸入n,代表次數,每次輸入8*8的棋盤,處理3種命令:①L:打印所有合法操作,②M:放棋子,③Q:打印棋盤然后退出。

思路:①用字符數組存棋盤,整型數組存合法位置。

②查找的方法:當前玩家為cur,遍歷棋盤,發現棋子顏色為cur,就從此位置,向8個方向查找,查找到有back(對手),就置flag為1,

繼續查找,查找到'-',即為合法位置,記錄此位置,換方向查找。

③放棋子:和查找思路類似,修改放下的棋子后,從此位置向8個方向查找,查找到cur,cntBack++,繼續查找,查找到有back,置flag為1,

只有flag=1且cntBack!=0,才代表可以修改其中的back,滿足則循環修改。

1 #include "stdio.h" 2 #include "string.h" 3 #include "stdlib.h" 4 #define FIN freopen("input.txt","r",stdin) 5 #define FOUT freopen("output.txt","w",stdout) 6 char board[9][9],cur,cmd,back; 7 int legal[9][9],hasLegal,numb,numw; 8 int n; 9 void find()//查找合法位置 10 { 11 int count=0,count2=0; 12 hasLegal=1; 13 memset(legal,0,sizeof(legal)); 14 // curnum=backnum=0; 15 for(int i=0;i<8;i++) 16 { 17 for(int j=0;j<8;j++) 18 { 19 if(board[i][j]==cur) 20 { 21 int next[8][2]={{0,1},{1,0},{0,-1},{-1,0},{-1,1},{1,1},{1,-1},{-1,-1}};//右,下,左,上,右上,右下,左下,左上 22 int nextx=i,nexty=j; 23 // printf("1(%d,%d)\n",nextx+1,nexty+1); 24 for(int k=0;k<8;k++,nextx=i,nexty=j) 25 { 26 int flag=0; 27 nextx+=next[k][0]; 28 nexty+=next[k][1]; 29 // printf("k=%d 2(%d,%d)\n",k,nextx+1,nexty+1); 30 if(nextx>7||nextx<0||nexty>7||nexty<0) 31 continue; 32 // printf("(%d,%d)=%c back=%c\n",nextx,nexty,board[nextx][nexty],back); 33 if(board[nextx][nexty]==back) 34 { 35 flag=1; 36 // printf("flag=1\n"); 37 } 38 while(flag&&board[nextx][nexty]!=cur) 39 { 40 nextx+=next[k][0]; 41 nexty+=next[k][1]; 42 // printf("3(%d,%d)=1\n",nextx+1,nexty+1); 43 if(nextx>7||nextx<0||nexty>7||nexty<0) 44 break; 45 if(board[nextx][nexty]=='-') 46 { 47 legal[nextx][nexty]=1; 48 // printf("real(%d,%d)=1\n",nextx+1,nexty+1); 49 count++; 50 break; 51 } 52 } 53 } 54 } 55 } 56 } 57 if(count!=0) 58 { 59 for(int i=0;i<=7;i++) 60 { 61 for(int j=0;j<=7;j++) 62 { 63 if(legal[i][j]!=0) 64 { 65 if(count2==0) 66 { 67 count2++; 68 } 69 else 70 printf(" "); 71 printf("(%d,%d)",i+1,j+1); 72 } 73 } 74 } 75 printf("\n"); 76 } 77 else 78 { 79 printf("No legal move.\n"); 80 hasLegal=0; 81 } 82 } 83 void cnt()//輸出棋子顏色和個數 84 { 85 for(int i=0;i<8;i++) 86 { 87 for(int j=0;j<8;j++) 88 { 89 if(board[i][j]=='B') 90 numb++; 91 else if(board[i][j]=='W') 92 numw++; 93 } 94 } 95 } 96 void change(int r,int c)//修改棋子 97 { 98 int next[8][2]={{0,1},{1,0},{0,-1},{-1,0},{-1,1},{1,1},{1,-1},{-1,-1}}; 99 int nextx=r,nexty=c,cntBack,flag; 100 board[r][c]=cur; 101 // printf("change board[%d][%d]=%c\n",r+1,c+1,board[r][c]); 102 for(int k=0;k<8;k++,nextx=r,nexty=c) 103 { 104 cntBack=0; 105 flag=0; 106 while(board[nextx][nexty]!='-') 107 { 108 nextx+=next[k][0]; 109 nexty+=next[k][1]; 110 if(nextx<0||nextx>7||nexty<0||nexty>7) 111 break; 112 if(board[nextx][nexty]==back) 113 cntBack++; 114 if(board[nextx][nexty]==cur) 115 { 116 flag=1; 117 break; 118 } 119 } 120 // printf("cntback=%d\n",cntBack); 121 if(cntBack!=0&&flag) 122 { 123 int nexti=r,nextj=c,l; 124 for(l=0,nexti+=next[k][0],nextj+=next[k][1];l<cntBack;l++,nexti+=next[k][0],nextj+=next[k][1]) 125 { 126 // printf("board[%d][%d]",nexti+1,nextj+1); 127 board[nexti][nextj]=cur; 128 // printf("board[%d][%d]=%c\n",nexti+1,nextj+1,board[nexti][nextj]); 129 } 130 } 131 } 132 } 133 void print()//打印 134 { 135 for(int i=0;i<8;i++) 136 printf("%s\n",board[i]); 137 if(n!=0) 138 printf("\n");//除最后一行都要輸出一個空行 139 } 140 int main() 141 { 142 // FIN; 143 // FOUT; 144 char r,c,ch; 145 scanf("%d",&n); 146 while(n--) 147 { 148 for(int i=0;i<8;i++) 149 { 150 scanf("%s",board[i]); 151 } 152 ch=getchar(); 153 scanf("%c",&cur); 154 if(cur=='W') 155 back='B'; 156 else 157 back='W'; 158 // memset(legal,0,sizeof(legal));//輸出測試 159 // for(int i=0;i<8;i++) 160 // printf("%s\n",board[i]); 161 // printf("cur=%c\n",cur); 162 while(cmd=getchar()) 163 { 164 if(cmd=='Q') 165 { 166 //打印 167 print(); 168 // if(n!=0) 169 // printf("XXX\n"); 170 break; 171 } 172 else if(cmd=='L') 173 { 174 // printf("input L\n"); 175 find(); 176 if(!hasLegal) 177 { 178 ch=cur; 179 cur=back; 180 back=ch; 181 } 182 // printf("cur=%c\n",cur); 183 } 184 else if(cmd=='M')//每次M都要統計輸出 185 { 186 scanf("%c%c",&r,&c); 187 // printf("r=%c c=%c\n",r,c); 188 //修改 189 change(r-'0'-1,c-'0'-1); 190 numb=numw=0; 191 cnt(); 192 //輸出統計 193 printf("Black -%3d White -%3d\n",numb,numw); 194 // print();//打印看看,記得刪除 195 ch=cur; 196 cur=back; 197 back=ch; 198 } 199 } 200 } 201 return 0; 202 }

?

轉載于:https://www.cnblogs.com/fudanxi/p/10323505.html

總結

以上是生活随笔為你收集整理的UVA 220 Othello的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美专区在线视频 | 精品日韩中文字幕 | 亚洲av无码乱码在线观看富二代 | 欧美成人aaaaⅴ片在线看 | 波多野结衣大片 | 波多野结衣高清电影 | 国产福利小视频在线观看 | 欧美色久| 不卡av网站 | 国产淫片av片久久久久久 | 中文字幕av日韩 | 欧美播放器 | 欧美老熟妇xb水多毛多 | 丁香九月激情 | 欧美一区二区三区成人片在线 | 黑料视频在线观看 | 九一av| 成人福利一区二区三区 | 国产馆在线观看 | 午夜婷婷色| 国产伦理在线观看 | 久久成人精品一区二区 | 色屁屁影院www国产高清麻豆 | 国产精品嫩草影院精东 | 丰满大乳奶做爰ⅹxx视频 | 日本www视频在线观看 | wwwwww在线观看 | 北条麻妃一二三区 | 无套内谢老熟女 | 午夜免费片 | 老子午夜影院 | 成人深夜免费视频 | 久久精品一区二区三区黑人印度 | 久久激情av | 尤物久久 | 成人免费毛片男人用品 | 国产精品丝袜黑色高跟 | 浪浪视频在线观看 | 亚洲视频综合 | 色欲AV无码精品一区二区久久 | 亚洲25p | 亚洲AV综合色区无码国产播放 | 国产又粗又大又爽视频 | 免费福利在线观看 | 嫩草视频在线观看视频 | 日本一区二区在线观看视频 | 免费中文视频 | 黄视频在线免费看 | 亚洲性xxx| 国产a级网站| 色婷婷六月天 | 黄色无遮挡网站 | 黄色片视频网站 | 国产精品久久无码 | 少妇日韩 | 午夜三级在线观看 | 婷婷在线免费 | 欧美一级黄色片视频 | 亚洲国产中文字幕 | 日韩中文字幕在线免费观看 | 亚洲视频精品在线 | 一本色道久久综合亚洲精品酒店 | 日本在线观看一区 | 波多野结衣在线影院 | 91久久久久久久久久久久久 | 亚洲黄色在线免费观看 | 尤物精品视频 | 国产精品久久久久久免费 | 欧美性天堂 | 一级全黄少妇性色生活片 | 宿舍女女闺蜜调教羞辱 | 欧美一区二区在线观看 | 夜夜欢天天干 | 人av在线| 51啪影院 | 荒岛淫众女h文小说 | 国产精品日本 | 伊人国产在线视频 | 欧美日韩精品一二三区 | 伊人久久久久久久久久久 | 色之久久综合 | 欧美视频免费看欧美视频 | av网站在线看 | 女人夜夜春| 午夜激情网站 | 国产资源第一页 | 欧美cccc极品丰满hd | 久久久久亚洲av片无码下载蜜桃 | 夜夜嗨av一区二区三区免费区 | 亚洲av成人片色在线观看高潮 | 欧美日韩激情一区二区 | 国产精品美女久久久免费 | 狠狠躁夜夜躁人人爽视频 | 欧美一区视频在线 | 国产第56页 | 天天干天天舔天天射 | 偷拍一区二区三区四区 | 壮汉被书生c到合不拢腿 | 医生强烈淫药h调教小说视频 |