师哥降落 特殊bool值的应用
作者:
WindSkyEnd
,
2024-11-24 17:09:53
,
所有人可见
,
阅读 2
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <sstream>
using namespace std;
typedef long long ll;
int main()
{
int n , m;
cin >> n >> m;
string str1[5010];
for(int i = 0 ; i < n ;i++)
cin >> str1[i];//读取地图
//cout << str1[0];
for(int i = 0 ; i < m ; i++)//列循环
{
for(int k = n-2 ; k >= 0 ;k--)
{
//每一列从下开始降落
for(int j = k ; j < n-1 ;j++)//每一列的行降落
{
bool is_notfly = true;
//超时在了这里 如果每一列的某一行已经不能降落 则不需要再循环
if(str1[j][i]=='*'&&str1[j+1][i]!='#'&&str1[j+1][i]!='*')
//每一列的不同行元素比较
{
is_notfly = false;
str1[j][i]='.';
str1[j+1][i]='*';//降落一格
}
if(is_notfly) break;
}
}
}
for(int i = 0 ; i< n ;i++)
{
cout << str1[i]<<endl;
}
//判断降落下来了几个最终
int cnt = 0;
for(int i = 0 ; i < m ;i++)
if(str1[n-1][i]=='*') cnt++;
cout << cnt;
return 0;
}