牛客始战
作者:互联网
链接:https://ac.nowcoder.com/acm/contest/3667/C
来源:牛客网
东汉末年,群雄并起。十八路诸侯各自为战,为得一地一城,大肆征战,民众死伤无数。
诸葛亮密如神鬼,疾如风雷。进不可挡,退不可追。昼不可攻,夜不可袭。多不可敌,少不可欺。前后应会,左右指挥。移五行之性,变四时之令。
神人也。
现,亮得诸侯割据图。亮根据此图,预测第一战将会在何处爆发。
此图由n*m个单位组成,图中有n个诸侯的根据地所在地,每个诸侯只会在第一天都会向自己根据地的上下左右方向霸占土地。当两个诸侯霸占到同一块土地时,那么此两诸侯就会开战。现问第一场战役将会在何处爆发!
注意:此土地被霸占的前提条件是在这一天还未被别的诸侯霸占,如果已经被别的诸侯霸占了,那么他就无法霸占了,当然也不会开战,因为谁先到,就是谁的土地。但是如果这块土地,是一起到达的,那么就会开战。
输入描述:
多组输入
n,m表示此图由n行m列组成 (1<= n,m<= 100),左上角的坐标是(1,1).
下跟n行m列矩阵,矩阵由*和#组成,一个#代表着一个诸侯,*代表此土地待征服。 保证割据图中最多只有十八位诸侯,最少没有诸侯。
输出描述:
输出第一场战争的(x,y)坐标示例1
如果不会爆发战争,请输入-1.
如果多个地方同时爆发第一场战争,那么请先按x排序,再按y排序,依次输出。
如果爆发战争输出格式为:
1 2
2 5
此表示第一场战争将在(1,2)和(2,5)两个点爆发。
输入
复制5 5 ***** ****# ***** ***** ****# 6 8 ###*#*#* **#***** ******** ******** ******** ********
输出
复制-1 1 4 1 6 2 2
#include<bits/stdc++.h> using namespace std; char a[105][105]; int main() { int n,m; while(~scanf("%d%d",&n,&m)){ memset(a,'\0',sizeof(a)); for(int i=0;i<n;i++){ scanf("%s",a[i]); } int flag=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]=='*'){ int k=0; if(a[i][j-1]=='#'){ k++; } if(a[i][j+1]=='#'){ k++; } if(a[i-1][j]=='#'){ k++; } if(a[i+1][j]=='#'){ k++; } if(k>=2){ printf("%d %d\n",i+1,j+1); flag=1; } } } } if(flag==0){ printf("-1\n"); } } return 0; }
标签:爆发,诸侯,int,霸占,此图,牛客,第一场,始战 来源: https://www.cnblogs.com/lipu123/p/12153821.html