- K12936 [环形迷宫]
- 题目描述
- 小科不小心走入了一个环形迷宫。迷宫由N个房间组成,以小科当前所在房间为起点,依次编号为1...N。每个房间要么是空地,要么是沼泽。小科想知道每一个房间及其相邻两个房间中的沼泽地的数量之和。当2 ≤ i ≤ N-1时,和房间i相邻的两个房间分别是房间i-1和房间i+1;和1号房间相邻的两个房间分别是2号房间和N号房间;和N号房间相邻的两个房间分别是1号房间和N-1号房间。请帮助小科统计任意房间i及其相邻两个房间的沼泽地的数量之和。
- 输入格式
-
第1行:1个正整数N,表示环形迷宫中房间的数量。
第2行:N个连续的字符,分别表示N个房间是沼泽还是空地,其中字符'*'表示该房间是沼泽,字符' '(空格)表示该房间是空地。
-
输出格式
-
N行:每行一个整数,其中第i行的整数表示房间i以及其相邻两个房间的沼泽数量之和
-
答案
-
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <bits/stdc++.h>
#include <string>
using namespace std;
char a[1005];
int main(){
int n;
cin>>n;
cin.get();
for(int i=1;i<=n;i++){
cin.get(a[i]);
}
for(int i=1;i<=n;i++){
int cnt=0;
if(i==1){
if(a[i+1]=='*'){
cnt++;
}
if(a[n]=='*'){
cnt++;
}
if(a[i]=='*'){
cnt++;
}
cout<<cnt<<endl;
}
else if(i!=1&&i!=n){
if(a[i+1]=='*'){
cnt++;
}
if(a[i-1]=='*'){
cnt++;
}
if(a[i]=='*'){
cnt++;
}
cout<<cnt<<endl;
}
else if(i==n){
if(a[1]=='*'){
cnt++;
}
if(a[i]=='*'){
cnt++;
}
if(a[i-1]=='*'){
cnt++;
}
cout<<cnt<<endl;
}
}
return 0;
}
【无标题】
最新推荐文章于 2024-10-06 14:10:45 发布