1、万万没想到之聪明的编辑

题目描述:

我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:

(1)三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello

(2)两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello

(3)上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC

我特喵是个天才!我在蓝翔学过挖掘机和程序设计,按照这个原理写了一个自动校对器,工作效率从此起飞。用不了多久,我就会出任CEO,当上董事长,迎娶白富美,走上人生巅峰,想想都有点小激动呢!

……

万万没想到,我被开除了,临走时老板对我说: “做人做事要兢兢业业、勤勤恳恳、本本分分,人要是行,干一行行一行。一行行行行行;要是不行,干一行不行一行,一行不行行行不行。” 我现在整个人红红火火恍恍惚惚的……

请听题:请实现大锤的自动校对程序

输入描述:
第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。后面跟随N行,每行为一个待校验的字符串。
输出描述:
N行,每行包括一个被修复后的字符串。
输入例子1:
2
helloo
wooooooow
输出例子1:
hello
woow

分析

​ 本题主要考察对字符串的操作,因为数据量不大,可以直接暴力法解题。主要要找到的两个特征字符子串的形式应该为AAA和AABB,对于AAA型的子串我们可以去掉第一个A那个位置的字符即可,AABB型的子串我们则需要去掉第一个B那个位置的字符,且优先“从左到右”匹配,以上操作可以通过字符串遍历的形式完成修改。在实际代码中,为了避免频繁对数组数据进行移动,我选择了使用‘0’来替换掉需要删去的字符来进行标记,具体实现代码如下:

代码

#include<stdio.h>
#include<string.h>
int main()
{int n,i;scanf("%d",&n); //待校验的字符串数量char str[1005];while(n--){int frist = 1,second = 0; scanf("%s",str);for(i=1;i<strlen(str);i++){if(str[i] == str[i-1] && frist < 3 && second == 0){frist ++;//满足AAA形式,去掉第一个Aif(frist == 3){str[i-2] = '0';frist = 2;}}else if(str[i] != str[i-1] && frist > 1 && second == 0 ){second = 1;}else if(str[i] == str[i-1] && frist > 1 && second != 0){//满足AABB形式,去掉第一个Bstr[i-1] = '0';second = 1; }else{frist = 1;second = 0; }}for(i=0;i<strlen(str);i++){//输出没被替换(去掉)的字符if(str[i]!='0')printf("%c",str[i]);}printf("\n");}return 0;} 

2、万万没想到之抓捕孔连顺

题目描述

我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议

(1) 我们在字节跳动大街的N个建筑中选定3个埋伏地点。

(2)为了相互照应,我们决定相距最远的两名特工间的距离不超过D。

我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!

……

万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在cosplay的队伍中逃出了字节跳动大街。只怪他的伪装太成功了,就是杨过本人来了也发现不了的!

请听题:给定N(可选作为埋伏点的建筑物数)、D(相距最远的两名特工间的距离的最大值)以及可选建筑的坐标,计算在这次行动中,大锤的小队有多少种埋伏选择。

注意:

(1) 两个特工不能埋伏在同一地点

(2)三个特工是等价的:即同样的位置组合(A, B, C) 只算一种埋伏方法,不能因“特工之间互换位置”而重复使用

输入描述:
第一行包含空格分隔的两个数字 N和D(1 ≤ N ≤ 1000000; 1 ≤ D ≤ 1000000)第二行包含N个建筑物的的位置,每个位置用一个整数(取值区间为[0, 1000000])表示,从小到大排列(将字节跳动大街看做一条数轴)
输出描述:
一个数字,表示不同埋伏方案的数量。结果可能溢出,请对 99997867 取模
输入例子1:
4 3
1 2 3 4
输出例子1:
4
例子说明1:
可选方案 (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)
输入例子2:
5 19
1 10 20 30 50
输出例子2:
1
例子说明2:
可选方案 (1, 10, 20)

分析

​ 该题目主要考察排列组合的相关知识点。每次输入一个位置点的时候,我们可以先将该位置选上,然后确定在该位置之前符合条件的位置中选出两个位置的组合数,注意对 99997867 取模,代码如下:

代码

#include<stdio.h>
#include <iostream>
#include <vector>
using namespace std;//算出在该位置之前符合条件的位置中选出两个位置的组合数
long long int C(long long int n){return (n-1) * n / 2;
}
int main(){long long int n, d, count = 0;
//    scanf("%lld %lld",&n,&d);cin>> n>> d;vector<long long int> v(n);int i,j;for (i = 0, j = 0; i < n; i++) {//        scanf("%lld",&v[i]);cin>> v[i];//确定符合条件的位置while (i >= 2 && (v[i] - v[j]) > d) {j++;}count += C(i - j);}
//    printf("%lld\n",count % 99997867);cout << count % 99997867;return 0;
}

3、找零

题目描述

Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为)的商品,请问最少他会收到多少硬币?

输入描述:
一行,包含一个数N。
输出描述:
一行,包含一个数,表示最少收到的硬币数。
输入例子1:
200
输出例子1:
17
例子说明1:
花200,需要找零824块,找12个64元硬币,3个16元硬币,2个4元硬币即可。

分析

先找大面值的零钱,在找小面值的零钱。

代码

#include<stdio.h>
int main(){int N,sum = 0;scanf("%d",&N);N = 1024 - N;while(N!=0){if(N>=64) N-=64;else if(N>=16) N-=16;else if(N>=4) N-=4;else N-=1;sum++;}printf("%d\n",sum);return 0;
}

4、雀魂启动!

问题描述

小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少。

于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花色,并且去除了一些特殊和牌方式(例如七对子等),具体的规则如下:

  1. 总共有36张牌,每张牌是1~9。每个数字4张牌。
  2. 你手里有其中的14张牌,如果这14张牌满足如下条件,即算作和牌
  • 14张牌中有2张相同数字的牌,称为雀头。
  • 除去上述2张牌,剩下12张牌可以组成4个顺子或刻子。顺子的意思是递增的连续3个数字牌(例如234,567等),刻子的意思是相同数字的3个数字牌(例如111,777)

例如:

1 1 1 2 2 2 6 6 6 7 7 7 9 9 可以组成1,2,6,7的4个刻子和9的雀头,可以和牌

1 1 1 1 2 2 3 3 5 6 7 7 8 9 用1做雀头,组123,123,567,789的四个顺子,可以和牌

1 1 1 2 2 2 3 3 3 5 6 7 7 9 无论用1 2 3 7哪个做雀头,都无法组成和牌的条件。

现在,小包从36张牌中抽取了13张牌,他想知道在剩下的23张牌中,再取一张牌,取到哪几种数字牌可以和牌。

输入描述:
输入只有一行,包含13个数字,用空格分隔,每个数字在1~9之间,数据保证同种数字最多出现4次。
输出描述:
输出同样是一行,包含1个或以上的数字。代表他再取到哪些牌可以和牌。若满足条件的有多种牌,请按从小到大的顺序输出。若没有满足条件的牌,请输出一个数字0
输入例子1:
1 1 1 2 2 2 5 5 5 6 6 6 9
输出例子1:
9
例子说明1:
可以组成1,2,6,7的4个刻子和9的雀头
输入例子2:
1 1 1 1 2 2 3 3 5 6 7 8 9
输出例子2:
4 7
例子说明2:
用1做雀头,组123,123,567或456,789的四个顺子
输入例子3:
1 1 1 2 2 2 3 3 3 5 7 7 9
输出例子3:
0
例子说明3:
来任何牌都无法和牌

分析

​ 该问题可用回溯算法来进行计算,但数据量不大,在这里我选择使用暴力法解题,主要使用三重嵌套循环来遍历所有情况,找出符合要求的结果。

代码

#include<stdio.h>
int main(){int ans=0,a[10]={0},i,j,k,temp,b[12]={0},flag=0;for(i=0;i<13;i++){scanf("%d",&temp);a[temp]++;}//第一重循环,假设答案,假设应该取的牌为kfor(k=1;k<10;k++){//一种牌最多只能拥有四张if(a[k]==4) continue;a[k]++;//取牌//第二重循环,假设雀头for(i=1;i<10;i++){for(j=1;j<10;j++) b[j] = a[j];ans = k;int f=0;//顺子和刻子的数量//假设i为雀头if(b[i]>=2){b[i]-=2;//第三重循环,确定能否和牌for(j=1;j<10;j++){//刻子if(b[j]>=3) {b[j]-=3;f++;}//顺子while(b[j]>0&&b[j+1]>0&&b[j+2]>0){b[j]--;b[j+1]--;b[j+2]--;f++;}//剪枝if(b[j-1]>0&&b[j-1]<3&&j>1) break;}}//和牌if(f==4) break;ans = 0;} if(ans!=0){printf("%d ",ans);flag=1;//修改和牌标记}a[k]--;//拟回溯}if(flag==0) printf("0"); //未和牌printf("\n");return 0;
}

[C语言]字节跳动2019春招研发部分编程题相关推荐

  1. 字节跳动2019春招研发部分编程题汇总(Python版本)

    一.万万没想到之聪明的编辑 王大锤是一家出版社的编辑,负责校对投稿来的英文稿件,他发现一个发现拼写错误的捷径: 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> ...

  2. 字节跳动2019春招研发部分编程题汇总【题解】

    差不多2个小时才AK,题目难度还行吧. 自己好菜. 题目地址:https://www.nowcoder.com/test/16516564/summary 目录 万万没想到之聪明的编辑 [模拟] 万万 ...

  3. 【牛客网】字节跳动2019春招研发部分编程题汇总

    1-万万没想到之聪明的编辑 解题思路 此题的编辑规则如下 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 两对一样的字母(AABB型)连在一起,一 ...

  4. 字节跳动2019春招研发部分编程题汇总

    一:万万没想到之聪明的编辑 题目描述 给定一个字符串,按照要求修改字符串,输出最后的结果 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 2 ...

  5. 【公司真题--字节跳动】字节跳动2019春招研发部分编程题汇总

    文章目录 1.万万没想到之聪明的编辑 2.万万没想到之抓捕孔连顺 解法一:回溯(超时) 解法二:确定区间后数学组合问题直接求解 3.雀魂启动 1.万万没想到之聪明的编辑 直接暴力了! #include ...

  6. 字节跳动2019春招研发部分编程题_N个建筑中选定3个埋伏地点_决定相距最远的两名特工间的距离不超过D_可行的埋伏方案

    题目 import java.util.Scanner;public class Main_N_D_Second_2 {private static int mod = 99997867;public ...

  7. 字节跳动2019春招研发机试题  万万没想到之聪明的编辑

    我叫王大锤,是一家出版社的编辑.我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误.但是,优秀的人总能在平凡的工作中发现真理.我发现一个发现拼写错误的捷径:..... // ...

  8. 字节跳动2019春招后端开发工程师-笔试题解析

    一.简介 字节跳动2019春招第三批在线笔试(后端开发工程师)已结束,结果也是凉凉.本文主要是分析这次的题目,并给出代码,以供大家参考和讨论,如有错误之处,还望帮忙指正,谢谢每位优秀的程序员. 二.题 ...

  9. 字节跳动2019春招算法题

    字节跳动2019春招算法题 1.总结 难度:容易到中等. 一些题出的太烂,不给数据范围,而且内存设置有问题,如果是刷题不建议刷. 2.题目 (1) 简单字符串模拟. #include<bits/ ...

最新文章

  1. aspx跳转页面的符号_解决SpringBoot+MyBatis框架下页面跳转问题与代码优化处理。...
  2. 西瓜书_学习任务_更新至9.5号
  3. php 如何判断是否搜索出结果,搜索PHP - 如何调出搜索框没有结果
  4. ONAP — Overview
  5. 与数据相关的运算符和伪指令 offset align ptr type lengthof sizeof label 间接寻址 间接操作数 数组 变址操作数 指针 jmp, loop
  6. 初学Golang:web 请求的处理流程
  7. dll 导出函数 下划线_内核中的代码完整性:深入分析ci.dll
  8. 双指针 - 长按键入
  9. 10个顶级的CSS3代码生成器
  10. 目标检测——阅读代码需要了解的内容
  11. OpenCV算子速查表(持续更新)
  12. 时间序列分析导论书摘:自相关图意义分析
  13. Tomcat服务器下载、安装、配置环境变量教程(超详细)
  14. Mac 终端命令自动补齐的办法
  15. web开发与设计,这些网站为你提供大量的开发资源与设计灵感
  16. Java提取视频中的音频(JavaCV)
  17. 百乐达斯城全新梦幻主题乐园幻乐堡在韩国开业
  18. 利用python计算n阶行列式的源代码
  19. CorelDRAW如何设置填充颜色和边框颜色
  20. 实现对mysql增删改查_Java语言实现对MySql数据库中数据的增删改查操作的代码

热门文章

  1. 几款小型蓝牙天线的设计与应用
  2. IE7 中 div 背景透明的问题
  3. 用turtle画一个边长是100的五角星
  4. 在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!
  5. 前端vue实现给pdf添加水印
  6. 2020低压电工模拟考试题库及低压电工作业考试题库
  7. 2022-FANUC0imc/D_三菱M70数控系统(常用参数对照表)
  8. DIY诺基亚N73的耳机接口变3.5mm耳机接口
  9. 微信小程序自定义swiper轮播图面板指示点|小圆点|进度条
  10. 高级经理人的成功“相人术”