#include <iostream> #define N 102 usingnamespace std; char TA[N][N];//用于输入三角形 int n;//等边三角形边长 void makeTA() { for(int i =1; i <= n; i++) cin>>TA[i]; } void Solve() { int max =0,min; int a,b; char flag;//flag == 0,表示此行可以是'@'居多,或是'*'居多 //flag == 1,表示此行以'@'居多 //flag == 2,表示此行以'*'居多 int i,j; for(i =2; i <= n; i +=2) max += i /2; min = max;//对于偶数行'@'和'*'的数目必定相等, //因为'@'和'*'决不相连,且其不依赖于上下行 for(i =1; i <= n; i +=2) { flag =0; for(j =0; j < i; j++) if(TA[i][j] !='?') if(j %2==0) { if(TA[i][j] =='@') { flag =1; break;}//此种情况'@'比'*'多一个 elseif(TA[i][j] =='*') { flag =2;break;}//此种情况'@'比'*'少一个 } else { if(TA[i][j] =='@') { flag =2; break;}//此种情况'@'比'*'少一个 elseif(TA[i][j] =='*') { flag =1;break;}//此种情况'@'比'*'多一个 } a = i /2; b = a +1; switch(flag) { case0: max += b; min += a;break; case1: max += b; min += b;break; default : max += a;min += a;break; } } cout<<max<<""<<min<<endl; } int main() { while(cin>>n && n >=0) { makeTA(); Solve(); } return0; }
posted on
2009-03-08 09:08Xredman
阅读(223)
评论(0)
编辑收藏举报