首页 > 其他分享 >机试重点题目-2018

机试重点题目-2018

时间:2024-03-23 14:12:04浏览次数:19  
标签:Code 题目 int 解码 namespace 2018 using 机试 include

B:AIQP操作

考察:vector容器的基本操作

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

vector<int> v;
int n, m;

int main()
{
    cin >> n;
    for(int i = 0; i<n; i++){
        int t;
        cin >> t;
        v.push_back(t);
    }    
    
    cin >> m;
    m++;
    while(m --){
        string s;
        getline(cin, s);
        
        if(s[0] == 'A')
        {
            int a = s[2] - '0';
            v.push_back(a);
        }
        else if(s[0] == 'I')
        {
            int i = s[2] - '0';
            int a = s[4] - '0';
            vector<int> :: iterator itor = v.begin();
            v.insert(itor + i - 1, 1, a); //v.insert(p, n, val):在迭代器p之前插入n个值为val的元素
        }
        else if(s[0] == 'Q')
        {
            int a = s[2] - '0';
            cout << count(v.begin(),v.end(), a) << endl;
        }
        else
        {
            for(auto x : v)
                cout << x << " ";
            cout << endl;    
        }
    }
    return 0;
}
/*
5
1 2 3 4 5
4
A 8
I 2 5
Q 5
P
输出:5 
*/
View Code

 

C:小明坐火车

考察:DFS + 栈的合法顺序

#include <iostream>
#include <string>

using namespace std;

#define M 15 
const int N = 15;

int CalcCat(double n)
{
    int n_factorial = 1;
    //n!
    for(int i = 1; i<=n; i++) {
        n_factorial *= i;
    }

    int n_2_factorial = 1;
    for(int i = 1; i<=2*n; i++) {
        n_2_factorial *= i;
    }


    return (1 / (n + 1))  * (n_2_factorial) / (n_factorial * n_factorial);
}

//判断出栈顺序是否合法 
bool valid(char a[], int n)
{
    char buf[M];
    int top = -1;
    for(int i = 0; i<n; i++){
        for(int j = i + 1; j<n; j++){
            //本质上比较ASCII码值
            //出栈序列中,元素i之后所有比i小的元素之间必须是降序排列的
            if(a[j] < a[i]) buf[++ top] = a[j];
        }
        for(int j = 0; j<top; j++)
            if(buf[j] < buf[j + 1]) return false;
    }
    return true;
}

bool NotInList(char a[], int n, char c)
{
    for(int i = 0; i<n; i++)
        if(a[i] == c)
            return false;
    return true;
}

void func(char a[], int l, int n)
{
    //从左侧开始放数,一直放到n-1说明满了(此时l变成n了) 
    if(l == n) {
        if(valid(a, n)){
            //如果符合出栈规则,打印出来即可
            for(int i = 0; i<n; i++)
                cout << a[i];
            cout << endl; 
        }
        return;
    }
    
    for(int i = 0; i<n; i++) {
        char temp = 'a' + i;
        if(NotInList(a, l, temp)) {
            //如果当前字母不在已有序列中,则加进去 
             a[l] = temp;
             func(a, l + 1, n); //递归搜第下一个位置 
        }
    }
}

int main()
{
    int n;
    cin >> n;
    int catalan = CalcCat(n);
    cout << catalan << endl;
    char a[M];//用来保存n个字母全排列的情况,之后对每一序列进行判断是否符合出栈规则  
    func(a, 0, n);
    
    return 0;
}
View Code

 

F:解码方法

考察:计数类DP

#include <iostream>
#include <string.h>

using namespace std;

const int N = 10010;
int f[N];//f[i]:1~i个字符的解码方案数量 
char s[N];
/*
1、最后一个字母占1位
最后i位置不变,所以只有1~i-1会改变,而前i-1个字符的解码方案一定是包含了第i个(因为已经知道i可以解码了) 
f[i] = f[i - 1], 1 <= si <=9
2、最后一个字母占2位
同理,f[i] = f[i - 2]

f[i] = f[i - 1] + f[i - 2],10 <= (si-1si-2) <= 26 
*/

int main()
{
    cin >> s + 1;
    int n = strlen(s + 1);
    f[0] = 1;
    for(int i = 1; i<=n; i++)
    {
        //当a[i]可以解释成单个数字时 
        if(s[i] >= '1' && s[i] <= '9')
            f[i] = f[i - 1];
        //当a[i]要和a[i-1]结合起来解释成一个数字时 
        if(i > 1)
        {
            int t = (s[i - 1] - '0') * 10 + s[i] - '0';
            if(t >= 10 && t <= 26) f[i] += f[i - 2];
        }
    }
    
    cout << f[n] << endl;
    return 0;
}
/*
1725102
output:
4
*/
View Code

 

标签:Code,题目,int,解码,namespace,2018,using,机试,include
From: https://www.cnblogs.com/GeekDragon/p/18087561

相关文章

  • 数组 题目
    1.2034:【例5.1】反序输出【题目描述】输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。【输入】输入一行共有n个数,每个数之间用空格隔开。【输出】如题要求:一行,共有n个数,每个数之间用一个空格隔开。......
  • 数据库面试高频题目 - 深度解析 MySQL:探秘关系型数据库的核心技术(一)
       本文将深入探讨MySQL,这是关系型数据库中的核心技术,被广泛应用于数据存储和管理。透过高频面试题解析,我们将深入研究MySQL在数据建模、查询优化和事务处理中的作用。无论你是初学者还是渴望加深对关系型数据库技术的了解,本文都将为你提供实用的面试准备。一、innod......
  • 机试重点题-2021/2023
    20215:由二叉树前々序列和中々序列得到后々序列列 #include<iostream>#include<unordered_map>usingnamespacestd;constintN=50010;intn;inta[N],b[N];//前序,中序unordered_map<int,int>p;voidbuild(intal,intar,intbl,intbr){if(al......
  • 【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-系统服务-试卷
    2022年甘肃省职业院校技能大赛高职组网络系统管理竞赛系统服务模块试题目录一、竞赛介绍…1(一)环境登录…1(二)系统配置…1(三)竞赛环境…1二、竞赛注意事项…1三、竞赛结果文件的提交…2四、Linux项目任务描述…2(一)拓扑图…2(二)基本配置…3五、Linux项目任务清......
  • 【题目】【网络系统管理】2021年全国职业院校技能大赛模块B--样题(一)
    2021年全国职业院校技能大赛网络系统管理(样题1)模块B:Windows环境全国职业院校技能大赛执委会.技术专家组2021年03月目录一、赛题说明3(一)竞赛介绍3(二)密码3(三)竞赛时间3(四)竞赛注意事项3(五)竞赛结果文件的提交3二、项目任务描述4(一)基本配置4(二)拓扑图5三、......
  • 【题目】【网络系统管理】2021年全国职业院校技能大赛模块B--样题(二)
    2021年全国职业院校技能大赛网络系统管理(样题2)模块B:Windows环境全国职业院校技能大赛执委会.技术专家组2021年03月目录一、赛题说明3(一)竞赛介绍3(二)密码3(三)竞赛时间3(四)竞赛注意事项3(五)竞赛结果文件的提交3二、项目任务描述4(一)基本配置4(二)拓扑图5三、......
  • 机试重点题-2019
    B:数字配对考察:map容器的应用#include<iostream>#include<algorithm>#include<map>usingnamespacestd;intn;map<int,int>mp;intmain(){cin>>n;for(inti=0;i<n;i++){inttemp;cin......
  • 机试真题重点题目-2017
    A:连续字母#include<iostream>#include<string.h>#include<algorithm>usingnamespacestd;constintN=110;intn;charstr[N];intmain(){cin>>n;while(n--){scanf("%s",str+1);......
  • 2024. 1华为od机试C卷【传递悄悄话】Python
    题目给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。输入描述0920-1-1157-1-1-1-132注:-1表示空节点输出......
  • WolvCTF2024 一道RE题目的分析
    doubledelete'srevenge:这道题给了两个附件:reveng1(elf)和一个未知格式文件flag.txt.enchxd看一下这个文件应该是加密过的文件再来分析一下elf程序逻辑是读取文件,然后进行加密,然后再写出文件,刚才那个flag.txt.enc加密过程:fread(ptr,1uLL,0x30uLL,stream);//......