IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> HAUT OJ 2021 新生周赛一 总结 -> 正文阅读

[数据结构与算法]HAUT OJ 2021 新生周赛一 总结

问题 E: 聚聚的小游戏? (坑点:第二行输入字符串需要提前吃掉换行符)

问题描述:

聚聚写课程设计突发奇想做了一个益智(简单)小游戏。游戏中间有一部分是使用键盘W、A、S、D(分别代表上、左、下、右)来控制角色移动,现在游戏角色在原点,聚聚给你n个大写字母‘W’’A’’S’’D’,如果角色经过这n个操作后依然在原点请输出”YES”,否则输出”NO”(不带引号)。

输入:

第一行,一个正整数n,且n<=100

第二行,n个字符,每个字符是大写字母‘W’或’A’或’S’或’D’

输出:

一行,如果角色还在原点输出”YES”(不带引号),否则输出”NO”(不带引号)

样例输入:

8
WASDWASD

样例输出:

YES

原因分析:

第一次忘了要提前吸掉换行符


解决方案:

#include<stdio.h>

int main(){
	int w = 0, a = 0, s = 0, d = 0; // 统计WASD的出现次数 
	int n, i;
	char op;
	scanf("%d%*c", &n); // 使用%*c吃掉行末换行   也可以 getchar();
	for(i = 1; i <= n; i++){
		scanf("%c", &op);
		
		// 统计各种字符出现次数 
		if(op == 'W') w++;
		else if(op == 'A') a++;
		else if(op == 'S') s++;
		else if(op == 'D') d++;
	}
	// 如果上下次数相等 且 左右次数相等,停在原点 
	if(w == s && a == d) printf("YES");
	else printf("NO");
	return 0;
} 


问题 F: 聚聚的幸运数字 (失误点:将问题复杂化)

问题描述:

聚聚看起来AC了很多题而且正确率很高,但是聚聚喜欢把这些归结于“运气”。聚聚有自己的幸运数字:5141919。卷卷也想变得幸运但又不想和聚聚数字一样,卷卷想知道对于一个数字x能否由聚聚的幸运数字删掉其中任意个1得到。

输入:

一行,一个整数x(保证x不等于5141919)

输出:

如果可以则输出“YES”,否则输出“NO”。(不含引号)

样例输入:

51499

样例输出:

YES


原因分析:

思路:建立两个个数组,第一个数组记录?5141919 各个数字出现的次数,第二个数组存输入的整数的各个数字出现的次数,然后比较两个数组除1外各个数字出现的次数是否相同,再判断第二个数组1出现的次数比第一个数组少;

简单思路:直接枚举所有情况


?


解决方案:

#include<stdio.h>

int main(){
	int n;
	scanf("%d", &n); 
	if(n == 5499 || n == 51499 || n == 54199 || n == 54919 || n == 514199 || n == 514919 || n == 541919)
		printf("YES");
	else printf("NO");
    return 0;
}

问题 H: 聚聚的Rating目标(失误点:代码复杂化)

问题描述:

聚聚今晚又在玩某大型多人开黑(?)写bug游戏,聚聚的评价是:寄,掉大分!(事实上聚聚每次这样说最后都会上大分)。出Rating(分数)后聚聚会设定新的Rating目标。聚聚认为如果一个数字的各位数字中非零数字不超过?1?个,则该数可以被作为一个Rating目标。

比如,600,10000,7?都是合理的Rating目标,而?12,3001,12345?则不是。

现在,聚聚知道自己的Rating,记作n,请你告诉聚聚距离下一个Rating目标还差多少分?

输入:

一行,一个正整数n,且n<=100000

输出:

一行,一个正整数,表示当前Rating距离下一个Rating目标有多少分。

样例输入:

2021

样例输出:

979


原因分析:

1.求最高位数字竟然还用了数组去求 (简单思路:直接求出位数,输入的数字/ 10的(位数-1)次方


解决方案:

#include<stdio.h>
#include<math.h>

int main(){
    int rat, r, ans, k, t = 0;
    
    scanf("%d", &rat);
    r = rat;
    
    //求位数
    while(rat){ 
        t++;
        rat = rat / 10;
    }
	
	//求出10的(长度-1)次方 
    k = pow(10, t - 1);

	
	//求出结果
	ans = ((r / k) + 1) * k - r; 

    printf("%d", ans);
    
    return 0;
}

总结:

1.多注意细节性的问题,仍然需要加强字符类型的题目训练

2.不要老实硬解题,有没有巧的,简单的办法去解决.

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:28:58  更:2021-10-06 12:29:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 16:11:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码