Untitled
unknown
plain_text
3 years ago
2.5 kB
4
Indexable
#include <stdio.h> int main() { int i,j,x,k; int rows,columns,distance,times; int found; char array1[42][42]={'\0'},array2[42][42]={'\0'}; scanf("%d %d",&rows,&columns); for(i=0;i<rows;i++) { scanf("%s",array1[i]); } for(i=0;i<rows;i++) //把array1的x和.複製到array2,array1中的o在array2其他設成. { for(j=0;j<columns;j++) { if(array1[i][j]=='o') { array2[i][j]='.'; } else { array2[i][j]=array1[i][j]; } } } distance=columns; for(i=0;i<rows;i++) //找出array1最底層o距離x的長度 { for(j=0;j<columns;j++) { if(array1[i][j]=='o' && array1[i+1][j]!='o') { x=0; for(k=i;k<rows;k++) { found=0; if(array1[k][j]=='x') { x=k-i-1; found=1; break; } } if(!found) //如果o下面都沒有x的話 { x=k-i-1; } if(x<distance) //取最短距離 { distance=x; } } } } for(i=0;i<rows;i++) //將array1的o移動後的結果放到array2 { for(j=0;j<columns;j++) { if(array1[i][j]=='o') { array2[i+distance][j]='x'; } } } times=0; for(i=0;i<rows;i++) //檢測一整排都是x的情況 { x=0; for(j=0;j<columns;j++) { if(array2[i][j]=='x') { x++; } } if(x==columns) { array2[i][0]='m'; //若整排都是x,將那排標記 times++; //算總要消去的行數 } } for(i=0;i<times;i++) //先印出消去的行數 { for(j=0;j<columns;j++) { printf("."); } printf("\n"); } for(i=0;i<rows;i++) //印剩下的 { if(array2[i][0]!='m') //若遇到沒有標記的才印出 { printf("%s\n",array2[i]); } } return 0; }
Editor is loading...