
简易连连看(本题的坑巨多!我帮大家总结一下)
发布日期:2021-05-06 03:52:58
浏览次数:21
分类:技术文章
本文共 1003 字,大约阅读时间需要 3 分钟。
简易连连看
题目
答案
#includeint main(){ int n; scanf("%d",&n); getchar(); n=n*2; //将n乘2以方便后续的代码编写 char a[n][n]; int i,j,k; for(i=0;i
总结遇到的坑
- 在遇到输入字符的题目时,一定要注意对于空格、回车等字符的特殊处理,拿本题来说,每行都要分情况处理并在最后加一个getchar();同时,在输入整数和输入字符之间也要加一个getchar()吸收回车。代码如下:
scanf("%d",&n); getchar(); n=n*2; char a[n][n]; int i,j,k; for(i=0;i
- 如题所说,注意格子的行、列编号是从1到2N,所以在输入坐标后,要将他们都减一,以此来和数组适配。代码如下:
int x1,y1,x2,y2; scanf("%d %d %d %d",&x1,&y1,&x2,&y2); x1--,y1--,x2--,y2--;
- 在判断是否连连看成功时,要注意,如果两个字符已经是
*
了,就还是要输出Uh-oh
,而非进行后续的打印操作。代码如下:
if(a[x1][y1]==a[x2][y2]&&a[x1][y1]!='*'&&a[x2][y2]!='*')
-
这里判断是否全部匹配成功,不需要每次都遍历数组判断是否都为
*
,只需创建一个count2
变量用以记录匹配成功的次数,当匹配的次数与数组内总字符数量的一半相等时,就是全部匹配成功的时刻。(这个算是注意事项) -
在打印第三次
Uh-oh
后,要马上输出Game Over
并break
,而非将所有的‘*’打印出来。所以这个地方要注意判断count2
(匹配成功的次数)的位置.代码如下:
if(a[x1][y1]==a[x2][y2]&&a[x1][y1]!='*'&&a[x2][y2]!='*') { count2++; if(count2==n*n/2) { printf("Congratulations!\n"); break; } a[x1][y1]='*'; a[x2][y2]='*'; for(j=0;j
最后
当你绕过上述的所有坑后,恭喜你!你已经能顺利通过测验了。
既然都看到这了,大家能不能为这篇文章点上一个宝贵的赞呢?十分感谢大家!
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月04日 08时45分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
选择性估算器绕过行安全策略漏洞
2019-03-05
对PostgreSQL数据库结构的宏观理解
2019-03-05
查询某表格上次进行vacuum的时间
2019-03-05
invalid byte sequence for encoding
2019-03-05
聊一聊那些应该了解的大佬(飞控,人工智能方向)
2019-03-05
redis向数组中添加值并查看数组长度
2019-03-05
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2019-03-05
sqlplus的基本使用
2019-03-05
Oracle删除主表数据
2019-03-05
Oracle常用SQL
2019-03-05
技术美术面试问题整理
2019-03-05
C++学习记录 五、C++提高编程(2)
2019-03-05
4 Java 访问控制符号的范围
2019-03-05
VUE3(八)setup与ref函数
2019-03-05
Vue之Element标签页保留用户操作缓存。
2019-03-05
智能合约开发实践(1)
2019-03-05
MATLAB——操作矩阵的常用函数
2019-03-05
CMake自学记录,看完保证你知道CMake怎么玩!!!
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
牛客练习赛56 D 小翔和泰拉瑞亚(线段树)
2019-03-05