数组-12. 简易连连看

 1 /*
 2  * Main.c
 3  * E12-数组-12. 简易连连看
 4  *  Created on: 2014年8月22日
 5  *      Author: Boomkeeper
 6  ********测试通过*********
 7  */
 8
 9 #include <stdio.h>
10 #include <stdlib.h>
11
12 int main(void){
13
14     int x1,y1,x2,y2;
15     int i,j,k;
16     int N;//题目中的N
17     char array[10][10];
18     int count=0;//计次匹配错误的次数
19     int m=0;//玩家输入的次数
20     int letterLeft;//盘面中剩余的字母个数,当减少到0时,则胜利
21
22     scanf("%i",&N);
23     getchar();
24
25     letterLeft=2*N*2*N;
26
27     for(i=0;i<(2*N);i++)
28         for(j=0;j<(2*N);j++){
29             array[i][j]=getchar();
30             getchar();
31         }
32
33     scanf("%d",&m);
34     getchar();
35
36     for(i=0;i<m;i++){
37         scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
38
39         //匹配成功,则将两个符号消为“*”
40         if((array[x1-1][y1-1]==array[x2-1][y2-1]) &&
41                 (array[x1-1][y1-1]<=‘Z‘ && array[x1-1][y1-1]>=‘A‘)){
42             array[x1-1][y1-1]=‘*‘;
43             array[x2-1][y2-1]=‘*‘;
44             letterLeft=letterLeft-2;
45
46         } else{
47             printf("Uh-oh\n");
48             count++;
49             continue;
50         }
51         //若匹配错误达到3次,则输出“Game Over”并结束游戏
52         if(count==3){
53             printf("Game Over\n");
54             exit(0);
55         }
56         //当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏
57         if(letterLeft==0){
58             printf("Congratulations!\n");
59             exit(0);
60         }
61         //输出盘面
62         for(j=0;j<2*N;j++){
63             for(k=0;k<2*N-1;k++)
64                 printf("%c ",array[j][k]);
65             printf("%c\n",array[j][2*N-1]);
66         }
67
68     }
69
70     return 0;
71 }

刚看到这个题目头都大了,简直就是一篇短文阅读理解,那么多字...一下子就没了耐心。

但最后发现,它比“数组-11. 猴子选大王”还是简单多了,因为没有涉及很高深的数学问题,只要耐住性子,还是做了出来。

只是读题目就读了三四遍,测试了几十遍...这要是在考试中...%>_<%   %>_<%

题目链接:

http://pat.zju.edu.cn/contests/basic-programming/%E6%95%B0%E7%BB%84-12

.

时间: 2024-10-01 04:58:20

数组-12. 简易连连看的相关文章

数组-12. 简易连连看(20)

数组-12. 简易连连看(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈建海(浙江大学) 本题要求实现一个简易连连看游戏模拟程序. 给定一个2Nx2N的方阵网格游戏盘面,每个格子中放置一些符号.这些符号一定是成对出现的,同一个符号可能不止一对.程序读入玩家给出的一对位置(x1, y1).(x2, y2),判断这两个位置上的符号是否匹配.如果匹配成功,则将两个符号消为"*"并输出消去后的盘面:否则输出"

实验7-2-10 简易连连看 (20分)

本题要求实现一个简易连连看游戏模拟程序. 给定一个2的方阵网格游戏盘面,每个格子中放置一些符号.这些符号一定是成对出现的,同一个符号可能不止一对.程序读入玩家给出的一对位置(.(,判断这两个位置上的符号是否匹配.如果匹配成功,则将两个符号消为“*”并输出消去后的盘面:否则输出“Uh-oh”.若匹配错误达到3次,则输出“Game Over”并结束游戏.或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏. 输入格式: 输入在一行中给一个正整数N(<).随后2行,每行2个

iOS中创建数组的简易方法与手势的使用

其实做外包也是挺不错,虽然累点,但是一天天的知识的扩展不少,下面是今天的收获 ①初始化数组一字典的方法 @[] 初始化不可变数组 @{} 初始化不可变字典 ②手势的使用 iOS中处理手势之前是用四个方法: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)touch

2019.12.12 简易闯塔游戏

/** * ChuangTaGame.java * com.oracle.array * * Function: TODO  * *   ver     date        author * ────────────────────────────────── *      2019年12月9日   17671 * * Copyright (c) 2019, TNT All Rights Reserved.*/ package com.oracle.array; import java.ut

android开发学习之路——连连看之游戏逻辑(五)

GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖,程序需要GameService组件包含如下方法.   ·start():初始化游戏状态,开始游戏的方法.     ·Piece[][] getPieces():返回表示游戏状态的Piece[][]数组.     ·boolean hasPieces():判断Pieces[][]数组中是否还剩Piec

Java数组与内存控制

一.Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值.(文章来源于李刚老师的<突破java程序员的16课>) 1:基本类型数组的两种初始化方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度. 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值. 不要同时使用静态初始化和动态初始化,也就是

经典例子彻解数组

例1:求学生的平均分 1 public static void main(String[] args) { 2 Scanner input=new Scanner(System.in); 4 int scores []=new int[5]; 5 int sum=0; 6 7 System.out.println("请输入五位同学的成绩:"); 8 for (int i = 0; i < scores.length; i++) {//遍历数组 9 scores[i]=input.

JavaScript基础 使用for循环遍历数组 并 查询 数组中是否存在指定的值

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

软件工程课堂练习:返回一个一维整数数组中最大子数组的和

题目:返回一个一维整数数组中最大子数组的和.要求:输入一个一维整形数组,数组里有正数也有负数.一维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 此次何琳琳负责程序分析,代码编程,张一博负责代码复审和代码测试计划. 经分析讨论设计思路如下: 1.定义一个长为20的数组,先对前10个数进行初始化,后10个数等于前10个数: 2.设置长度为10的循环依次以前十个数为头进行最大子数组的计算: 3,再设置一个数组用来存储