16:矩阵剪刀石头布

  • 查看
  • 提交
  • 统计
  • 提问

总时间限制: 
5000ms

内存限制: 
65536kB

描述
Bart的胞妹Lisa在一个二维矩阵上创设了新的大方。矩阵上每个岗位给三种生命形式有占据:石头,剪刀,布。每天,上下左右附近的不同生命形式拿见面时有发生交火。在交火中,石头永远强剪刀,剪刀永远胜布,布永远胜石头。每一样龙收后,败者的领地将于胜者占领。

卿的劳作是精打细算出n天过后矩阵的占用情况。

输入
率先推行包含三只正整数r,c,n,分别表示矩阵的行数、列数以及数。每个整数均无跳100。
连片下去r行,每行c个字符,描述矩阵初始时为占用的情况。每个位置上之字符只能是R,S,P三者之一,分别表示石头,剪刀,布。相邻字符中无空格。

输出
输出n天以后的矩阵占据情况。每个岗位上的字符只能是R,S,P三者之一,相邻字符中无空格。

样例输入
3 3 1
RRR
RSR
RRR

样例输出
RRR
RRR
RRR

来源
Waterloo local 2003.01.25

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 char a[110][110],b[110][110];
 7 int n,m,t;
 8 
 9 int main()
10 {
11 cin >> n >> m >> t;
12 for(int i=1;i<=n;i++)
13 for(int j=1;j<=m;j++)
14 {
15 cin>>a[i][j];
16 b[i][j]=a[i][j];
17 }
18 for(int k=1;k<=t;k++)
19 {
20 for(int i=1;i<=n;i++)
21 for(int j=1;j<=m;j++)
22 {
23 if(a[i][j]=='R')
24 {
25 if(a[i-1][j]=='S')b[i-1][j]='R';
26 if(a[i+1][j]=='S')b[i+1][j]='R';
27 if(a[i][j-1]=='S')b[i][j-1]='R';
28 if(a[i][j+1]=='S')b[i][j+1]='R';
29 }
30 if(a[i][j]=='S')
31 {
32 if(a[i-1][j]=='P')b[i-1][j]='S';
33 if(a[i+1][j]=='P')b[i+1][j]='S';
34 if(a[i][j-1]=='P')b[i][j-1]='S';
35 if(a[i][j+1]=='P')b[i][j+1]='S';
36 }
37 if(a[i][j]=='P')
38 {
39 if(a[i-1][j]=='R')b[i-1][j]='P';
40 if(a[i+1][j]=='R')b[i+1][j]='P';
41 if(a[i][j-1]=='R')b[i][j-1]='P';
42 if(a[i][j+1]=='R')b[i][j+1]='P';
43 }
44 }
45 for(int i=1;i<=n;i++)
46 for(int j=1;j<=m;j++)
47 a[i][j]=b[i][j];
48 }
49 for(int i=1;i<=n;i++)
50 {
51 for(int j=1;j<=m;j++)
52 cout << b[i][j];
53 cout << "\n";
54 }
55 return 0;
56 }

 

25:最丰富太差单词

  • 查看
  • 提交
  • 统计
  • 提问

归根结底时间限制: 
1000ms

内存限制: 
65536kB

描述
输入1行句子(不多给200独单词,每个单词长度不超100),只含有字母、空格和逗号。单词由至少一个连的假名构成,空格和逗号都是单词中的区间。

试跳输出第1单极度丰富之单词和第1只最好缺少单词。 

输入
一行句子。

输出
些微推行输出:
第1履行,第一单极丰富的单词。
第2实施,第一独极度短的单词。

样例输入
I am studying Programming language C in Peking University

样例输出
Programming
I

提示
要所有单词长度相同,那么首先独单词既是无比丰富单词也是无限短单词。

来源
习题(12-2)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 int max_=-1;
 7 int max_begin;
 8 int max_end;
 9 int min_=10000;
10 int min_begin;
11 int min_end;
12 char a[1000001];
13 int b[1000001];
14 int main()
15 {
16     int tot=0;
17     gets(a);
18     int l=strlen(a);
19     for(int i=0;i<=l;i++)
20     {
21         int begin=i;
22         if((a[i]>=65&&a[i]<=90)||(a[i]>=97&&a[i]<=122))
23         {
24             tot++;
25         }
26         else
27         {
28             if(tot>max_)
29             {
30                 max_=tot;
31                 max_begin=i-tot;
32                 max_end=i;
33             }
34              if(tot<min_&&tot!=0)
35             {
36                 min_=tot;
37                 min_begin=i-tot;
38                 min_end=i;
39             
40             }
41             tot=0;
42         }
43     }
44     for(int i=max_begin;i<=max_end-1;i++)cout<<a[i];
45     cout<<endl;
46     for(int j=min_begin;j<=min_end-1;j++)cout<<a[j];
47     return 0;
48 }