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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 南昌理工学院2021级新生入队考核(三) 题解 -> 正文阅读

[数据结构与算法]南昌理工学院2021级新生入队考核(三) 题解

A — 波吉大冒险

若一个数为偶数 那么这个数的最后一个数必定为偶数。
从这里下手的话,可以得知

只要给出的数最后一个数为偶数,答案为 0
第一个数为偶数,只要翻转整个数 就可以得到偶数,答案为 1

若不满足以上两个条件,那么如果整个数字中若有偶数,那么只要翻转这个偶数,将这个偶数变到第一个位置上去,再翻转整个数,即可得到偶数,答案为 2(先要判断这个数中是否含有偶数)

核心代码为

	string str; //将数字换成字符串处理
    cin >> str;
    int len = str.size() - 1; //字符串默认下标从0开始,所以要长度-1
    if((str[len] - '0') % 2 == 0){ //判断最后一个数是否为0
        printf("0\n");
        return;
    }	
    if((str[0] - '0') % 2 == 0){ //判断第一个数是否为0
        printf("1\n");
        return;
    }

    int p = 0;
    for (int i = 0; i < len; i ++ ){ //判断字符串中是否含有偶数
        if((str[i] - '0') % 2 == 0){
            printf("2\n");
            return;
        }
    }
    printf("-1\n");

B — 波吉的聚会

首先,组成的队伍里面要有两个国家的其中一个人之一,所以答案最多为 n, m 里面最少的一个
其次,组成的队伍最多只能由 (n + m) / 4支
所以答案就取两种情况的最小值

min((n + m)) / 4,min(n, m))

C — 波吉买花花

首先,先将给定的数组排序(肯定从小价钱的花开始买,买的花才最多), 那么只要

a[i] >= x && a[i] <= y 
m - a[i] >= 0

那么这束花就是可以买的

所以核心代码为

	int n, x, y, m;
    scanf("%d%d%d%d", &n, &,x, &y, &m);
    for (int i = 1; i <= n; i ++ ) cin >> a[i];
    sort(a + 1, a + 1 + n); //排序 ,没学过C++的可以用冒泡排序
    
    int ans = 0;
    for (int i = 1; i <= n; i ++ ){
        if(a[i] < x || a[i] > y) continue; //价格不符合
        if(m - a[i] < 0) break; //这束花买不起  后面更贵的花也买不起 
        m -= a[i]; //买
        ans ++;
    }
    printf("%d\n", ans);

D — 波吉不是笨蛋

水题,用个强制转换就可以

	char n;
    cin >> n;
    cout << (int)n << endl;

E && F

首先想到的是统计每个数的出现次数,用一个数组存就行,用这个思路可以过F,但是因为E题的数据范围开到了1e9, 那么是开不到这么大的数组的(内存不够) 所以就要换个思路。

我们可以将这个数组排序(更方便的统计出现次数),依次统计每个数的出现次数
例如我要统计排序后的数组 1 1 2 2 3 3 4 5 5
令con为统计次数,若a[i] != a[i - 1] 那么con重新定义为1
那么循环的过程con的值为 1 2 1 2 1 2 1 1 2
当i = 8的时候 要改变con的值 发现上一个con的值是奇数 就输出上一个数
所以我们每次再将con重新定义为1的时候 去查询上一个数字的出现次数是否为奇数,如果为奇数就输出

所以核心代码为

	sort (a + 1, a + 1 + n);
	
	int con = 1;//每个第一次出现的数都是第一个数
	for (int i = 2; i <= n; i ++ ){
		if(a[i] == a[i - 1]) con ++;
		else{
            if(con % 2 != 0){ //上一个数出现了奇次
				cout << a[i - 1] << endl;//输出上一个数
				return 0;
			}
            con = 1;//每个第一次出现的数都是第一个数
        } 
	}
	//如果到最后都没有输出数,因为题目保证了一定有解,那么最后一个数就是解
    cout << a[n] << endl;

G — 波吉的迷语

首先如果这个字符串不全是 0 或 1 那么就要对这个字符串进行拆分,拆到只剩 0 或者 1 为止 如果这个区间不全是0或者1,我们可以用递归去拆分区间,每次以中间为节点进行拆分

void solve(int l, int r) l, r 分别表示左端点和右端点

int mid = (l + r) / 2;
solve(l ,mid);
solve(mid + 1, r);

每次进入函数之前 都判断一下是否全为0或者1

	int p = 0; //判断是否区间内都为相同的数
	for (int i = l + 1; i <= r; i ++ ){
	    if(s[i] != s[i - 1]){
	        p = 1;
	        break;
	    }
	}
	if(p == 0){
	    if(s[l] == '0') printf("A");
        else printf("B");
	    return;
	}

所以完整核心代码为

void solve(int l, int r)
{
	int p = 0;
	for (int i = l + 1; i <= r; i ++ ){
	    if(s[i] != s[i - 1]){
	        p = 1;
	        break;
	    }
	}
	if(p == 0){
	    if(s[l] == '0') printf("A");
        else printf("B");
	    return;
	}
	
    printf("C");
    int mid = l + r >> 1;
 	solve(l, mid);
	solve(mid+ 1, r);
	return;
}

H — 诅咒之气

没啥好说的,直接上代码吧

	long long ans = 1, n, x;
	scanf("%lld%lld", &n, &x);
	for (int i = 1; i <= n; i ++ )
	{
		ans = ans + x * ans;
	}
	printf("%lld", ans);
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:06:58  更:2021-12-13 13:08:51 
 
开发: 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年11日历 -2024/11/26 16:31:56-

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