Untitled
unknown
plain_text
4 years ago
2.5 kB
6
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...