二维数组详解

6928: yym下象棋

描述

 

yym是一个喜欢玩象棋的人,现在yym的棋盘上有一匹马,

如果你们不知道马的走法,请看下图:(棋盘大小为9*9)

2345_image_file_copy_2.jpg

现在,yym想要一步吃掉它周围的其他棋子(不考虑黑或红,且数据保证不存在拌马脚的情况)请问yym最多能有几种吃的方案。

输入

一个棋盘,“H”代表马,其他的代表其他象棋,且棋盘上只有一个马。

输出

yym的马能吃掉的棋子的个数。

样例输入

 

..........
..........
..........
....H.....
..........
..........
..........
..........
..........

样例输出

0

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 char a[15][15]; 
 5 int main()
 6 {
 7     char c;
 8     int j;
 9     int x,y,tx,ty;
10     int nex[8][2] = {{-2,1}, {-1,2}, {1,2}, {2,1}, {2,-1}, {1,-2}, {-1,-2}, {-2,-1}};
11     for(int i=1;i<=9;i++)
12     {
13         for(j=1;j<=9;j++)
14         {
15             cin>>a[i][j];
16             if(a[i][j]=='H')
17             {
18                 x = i;
19                 y = j;
20             }
21         }    
22     }
23     int sum=0;
24     for(int i=0;i<8;i++)
25     {
26         
27         tx = x+nex[i][0];
28         ty = y+nex[i][1];
29         if(tx>9||tx<1||ty>9||ty<1)continue;
30         if(a[tx][ty]!='.')
31         sum++;
32     }
33     cout<<sum<<endl;
34     return 0;
35 }

5637: 天梯赛得分

描述

 

 

团体程序设计天梯赛是中国高校计算机大赛的竞赛版块之一,赛旨在提升学生计算机问题求解水平,增强学生程序设计能力,培养团队合作精神,提高大学生的综合素质,同时丰富校园学术气氛,促进校际交流,提高全国高校的程序设计教学水平。比赛重点考查参赛队伍的基础程序设计能力、数据结构与算法应用能力,并通过团体成绩体现高校在程序设计教学方面的整体水平。竞赛题目均为在线编程题,由搭建在网易服务器上的PAT在线裁判系统自动评判。难度分3个梯级:基础级、进阶级、登顶级。以个人独立竞技、团体计分的方式进行排名。

参赛队员可以在比赛中的任何时刻尝试解决任何梯级的题目。但只有当一支队伍的基础题总分超过 800 分时,其本队进阶部分的题目分数才被判为有效。只有当其进阶题总分超过 400 分时,其本队登顶部分的题目分数才被判为有效。

现在给出一个队伍(10人)中每人各个梯级的得分,问这个队伍总得分为多少?

 

 

输入

 

 

输入数据包含10行,每行为3个整数a、b和c,表示每个队员的基础级、进阶级和登顶级的得分情况。其中:

0<=a<=100

0<=b<=100

0<=c<=90

 

 

输出

 

 

输出这个队伍的总得分。

 

 

样例输入

 

80 0 0
80 0 0
80 0 0
80 0 0
80 0 0
80 0 0
80 0 0
80 0 0
80 0 0
80 20 0

样例输出

 800
思路:
先计算三个分的总和,判断如果基础大于800,就加上进阶的分,再判断进阶如果大于400,就加上登顶的分
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[11][4];
 4 int s1,s2,s3; 
 5 int main()
 6 {
 7     for(int i=1;i<=10;i++)
 8     cin>>a[i][1]>>a[i][2]>>a[i][3];
 9     for(int i=1;i<=10;i++){
10     s1+=a[i][1];s2+=a[i][2];s3+=a[i][3];
11     }
12     if(s1>800){
13         s1+=s2;
14         if(s2>400)s1+=s3;
15     }cout<<s1;
16     return 0;
17 }

4983: 二维数组

描述

 

 

给定一个n行m列的二维数组,以及某个整数x,问二维数组中是否至少存在一行或一列,其元素之和恰好为x。

 

 

输入

 

 

输入数据的第一行为n,m,x(1<=n, m<=50)。
接下来有n行,每行有m个整数。

 

 

输出

 

 

如果二维数组中至少存在一行或一列,其元素之和为x,则输出YES,否则输出NO

 

 

样例输入

 

3 4 10
1 2 3 4
2 3 4 5
3 4 5 6

样例输出

 YES
思路:
输入数据后,遍历每行、每列,如果有任何一行或一列的和等于x,就让f为1,遍历结束后就可以看f的结果输出yes或no
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,x,a[55][55];
 4 int main(){
 5     cin>>n>>m>>x;
 6     for(int i=1;i<=n;i++)
 7         for(int j=1;j<=m;j++)
 8             cin>>a[i][j];
 9     for(int i=1;i<=n;i++){
10         int sum=0;
11         for(int j=1;j<=m;j++)
12             sum+=a[i][j];
13         if(sum==x){
14             cout<<"YES"<<endl;
15             return 0;
16         }
17     }
18     for(int j=1;j<=m;j++){
19         int sum=0;
20         for(int i=1;i<=n;i++)
21             sum+=a[i][j];
22         if(sum==x){
23             cout<<"YES"<<endl;
24             return 0;
25         }
26     }
27     cout<<"NO"<<endl;
28     return 0;
29 }

 

posted @ 2023-03-28 14:38  CRt0729  阅读(76)  评论(0编辑  收藏  举报