机试_1_暴力求解

研究生复试上机基本题型及思路总结(上篇) 一、暴力求解 1. 枚举法 适用于问题规模较小,可以一个答案一个答案试统计所有的结果。一般问题的规模不能超过 10 的 6 次方。 2. 模拟法 按照题目的描述,直接编程输出即可。 2.1 图形排版 按照能否直接在输出图形中找到规律,采用两种方法。第一种是直接输出,适用于较为简单的题目,第二种方法是构造矩阵,改变矩阵直接输出,好处是可以从各个方向进行访问修改,... 阅读详情

一、枚举

判断是否可以使用枚举:分析数据量。
若时间限制在1000ms的情况下,大约可以进行10⁷的运算。

复杂度数据量
O(n!)10
O(2ⁿ)20
O(n³)200
O(n²)3000
O(nlogn)10⁶
O(n)10⁷
O(√10)10¹⁴
O(logn)>10²⁰

在这里插入图片描述


1 abc–清华大学

描述

设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。

输入描述:

题目没有任何输入。

输出描述:

请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。 每个输出占一行。

示例1

输入:


输出:


题解:

分析:
abc和bcc是两个三位数,由乘法分配律可知
abc = a*100 + b*10 + c
bcc = b*100 + c*10 + c = b*100 + 11*c
abc + bcc = a*100 + b*110 + c*12
#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    for (int a = 0; a <= 9; ++a) {
        for (int b = 0; b <= 9; ++b) {
            for (int c = 0; c <= 9; ++c) {
                if (a*100 + b*110 + c*12 == 532) {
                    cout << a << " " << b << " " << c << endl;
                }
            }
        }
    }
    return 0;
}

2 反序数–清华大学

描述:

设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值

输入描述:

程序无任何输入数据。

输出描述:

输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。

示例1

输入:

无

输出:

无

题解:

#include <iostream>
#include <cstdio>

using namespace std;

/*
 * 反序数--清华大学
 */
int main() {
    int num = 0;
    int reverseNum = 0;
    for (int a = 0; a <= 9; ++a) {
        for (int b = 0; b <= 9; ++b) {
            for (int c = 0; c <= 9; ++c) {
                for (int d = 0; d <= 9; ++d) {
                    num = a * 1000 + b * 100 + c * 10 + d;
                    reverseNum = d * 1000 + c * 100 + b * 10 + a;
                    //0XXX不是四位数
                    if (a != 0 && d != 0) {
                        if (9 * num == reverseNum) {
                            cout << a << b << c << d << endl;
                        }
                    }
                }
            }
        }
    }

    return 0;
}
#include <iostream>
#include <cstdio>

using namespace std;

/**
 * 获取num的反序数
 * @param num 
 * @return 
 */
int getReverseNumber(int num) {
    int reverseNumber = 0;
    while (num != 0) {
        reverseNumber *= 10;
        reverseNumber += num % 10;
        num /= 10;
    }
    return reverseNumber;
}

/*
 * 反序数--清华大学
 */
int main() {
    /*
     * 1111*9=9999,所以i循环到1111即可
     */
    for (int i = 1000; i <= 1111; ++i) {
        if (9 * i == getReverseNumber(i)) {
            cout << i << endl;
        }
    }

    return 0;
}

3 对称平方数–清华大学

描述

打印所有不超过256,其平方具有对称性质的数。如2,11就是这样的数,因为22=4,1111=121。

输入描述:

无任何输入数据

输出描述:

输出具有题目要求的性质的数。如果输出数据不止一组,各组数据之间以回车隔开。

示例1

输入:

无

输出:

无

题解:

#include <iostream>
#include <cstdio>

using namespace std;

/**
 * 获取num的反序数
 * @param num
 * @return
 */
int getReverseNumber(int num) {
    int reverseNumber = 0;
    while (num != 0) {
        reverseNumber *= 10;
        reverseNumber += num % 10;
        num /= 10;
    }
    return reverseNumber;
}

/**
 * KY267 对称平方数--清华大学
 * @return
 */
int main() {
    /*
     * 判断某个数num,其完全平方数是否为对称数
     * 即 num*num = num*num的反序数
     */
    for (int num = 0; num <= 256; ++num) {
        if (num * num == getReverseNumber(num * num)) {
            cout << num << endl;
        }
    }

    return 0;
}

二、模拟

  1. 图形排版
  2. 日期问题
  3. 其他模拟

1 输出梯形–清华大学

描述:

输入一个高度h,输出一个高为h,上底边为h的梯形。

输入描述:

一个整数h(1<=h<=1000)。

输出描述:

h所对应的梯形。

样例

输入:

4

样例输出:

      ****    
    ******  
  ******** 
**********

题解:

此题只需要按几何的方法画出梯形,然后找到行和列之间的关系即可。

在这里插入图片描述

#include <iostream>
#include <cstdio>
using namespace std;

/**
 * 输出梯形--清华大学
 * @return
 */
int main() {
    //用户出入h
    int h;
    while (cin >> h) {
        //行
        int row = h;
        //列
        int col = h + 2 * (h - 1);

        /*
         * 解法1
         */
        for (int i = 0; i < row; ++i) {
            //打印空格
            for (int j = 0; j < col - h - 2 * i; ++j) {
                cout << " ";
            }

            //打印 *
            for (int k = 0; k < h + 2 * i; ++k) {
                cout << "*";
            }
            //打印换行
            cout << endl;
        }

        /*
         * 解法2
         */
        for (int i = 0; i < row; ++i) {
            for (int j = 0; j < col; ++j) {
                if (j < col - h - 2 * i) {
                    cout << " ";
                } else {
                    cout << "*";
                }
            }
            cout << endl;
        }
    }
    return 0;
}

2 叠筐–杭州电子科技大学

描述:

现在给你两种颜色的箩筐,需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

输入描述:

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

输出描述:

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

示例:

输入:

11 B A
5 @ W

输出:

 AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
 AAAAAAAAA

 @@@
@WWW@
@W@W@
@WWW@
 @@@

题解:

这道题属实是有点难,思考了很久没什么思路,最后看了教程才有有点想法。

分析:
1、先将4个角补上,成为一个正方形。
2、从最外圈的正方形向内圈的正方形逐步构造。
3、以正方形的左上角坐标与右下角坐标来表示该圈。
4、为每个圈填充中心字符和外筐字符。
5、确定每个圈的边长,即填充字符的个数
6、构造完成后剔除4个角。

在这里插入图片描述

#include <iostream>
#include <cstdio>

using namespace std;

const int MAX_NUM = 80;

/**
 * 叠筐--杭州电子科技大学
 * @return
 */
int main() {
    //二维矩阵存放字符
    char matrix[MAX_NUM][MAX_NUM];
    //外圈边长
    int n;
    //中心字符
    char centerChar;
    //外圈字符
    char outsideChar;

    //第一个案列
    bool firstCase = true;

    while (cin >> n >> centerChar >> outsideChar) {
        //每个叠筐间输出空行
        if (firstCase) {
            //第一个叠筐不输出空行
            firstCase = false;
        } else {
            //非第一个叠筐输出空行
            cout << endl;
        }

        //(i, i)表示每个圈最左上角坐标
        for (int i = 0; i <= n / 2; ++i) {
            //(j, j)表示每个圈最右下角坐标
            int j = n - 1 - i;
            //当前圈的边长
            int length = n - 2 * i;
            //当前圈的字符
            char currentChar;
            if ((n / 2 - i) % 2 == 0) {
                //距离为偶数
                currentChar = centerChar;
            } else {
                //距离为奇数
                currentChar = outsideChar;
            }

            /*
             * 为当前圈赋值
             */
            for (int k = 0; k < length; ++k) {
                //上边
                matrix[i][i + k] = currentChar;
                //下边
                matrix[i + k][i] = currentChar;
                //左边
                matrix[j - k][j] = currentChar;
                //右边
                matrix[j][j - k] = currentChar;
            }
        }

        /*
         * 除去四个角
         */
        if (n != 1) {
            matrix[0][0] = ' ';
            matrix[0][n - 1] = ' ';
            matrix[n - 1][0] = ' ';
            matrix[n - 1][n - 1] = ' ';
        }

        /*
         * 逐行打印二维数组
         */
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                cout << matrix[i][j];
            }
            cout << endl;
        }
    }
    return 0;
}

3、今年的第几天?–清华大学

描述

输入年、月、日,计算该天是本年的第几天。

输入描述:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出描述:

输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。

示例1

输入:

1990 9 20
2000 5 1

输出:

263
122

题解:

此题较基础,只需把每个月对应的天数加起来即可。但是,日期类问题有一个注意点就是“闰年”,每逢闰年,2月就会有29天。

#include <iostream>
#include <cstdio>

using namespace std;

/*
 * 0~12月份对应的天数
 */
int dayTable[2][13] = {
        {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},    //平年
        {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}     //闰年
};

/**
 * 判断是否为闰年
 * @param year
 * @return
 */
int isLeapYear(int year) {
    //return (year & 3 == 0 && year % 100 != 0) || year % 400 == 0;
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

/**
 * 今年的第几天?--清华大学
 * https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d?tpId=40
 * @return
 */
int main() {
    int year;
    int month;
    int day;
    while (cin >> year >> month >> day) {
        //记录天数
        int dayNumber = 0;
        int row = isLeapYear(year);
        for (int i = 0; i < month; ++i) {
            dayNumber += dayTable[row][i];
        }
        dayNumber += day;
        cout << dayNumber << endl;
    }

    return 0;
}

4 打印日期–华中科技大学

描述

给出年份m和一年中的第n天,算出第n天是几月几号。

输入描述:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出描述:

可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

示例1

输入:

2000 3
2000 31
2000 40
2000 60
2000 61
2001 60

输出:

2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

题解:

注意判断“闰年”,按“yyyy-mm-dd”格式输出日期,格式不对也会判错。

#include <iostream>
#include <cstdio>

using namespace std;

/*
 * 空间换时间
 * 二维数组保存平年和闰年0~12月份对应的天数
 */
int dayTable[2][13] = {
        {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},    //平年
        {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}     //闰年
};

/**
 * 判断是否为闰年
 * 若是闰年,则返回1,对应dayTable[1][];反之,返回0,对应dayTable[0][]
 * @param year
 * @return
 */
int isLeapYear(int year) {
    //return (year & 3 == 0 && year % 100 != 0) || year % 400 == 0;
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

/**
 * 打印日期--华中科技大学
 * @return
 */
int main() {
    int year;
    int dayNumber;
    while (cin >> year >> dayNumber) {
        int month = 0;
        int day = 0;
        int row = isLeapYear(year);
        
        /*
         * 计算月份
         * 若dayNumber大于月份的天数,则减去对应天数
         * 同时,month++
         */
        while (dayNumber > dayTable[row][month]) {
            dayNumber -= dayTable[row][month];
            month++;
        }
        day = dayNumber;

        /*
         * 按格式输出日期
         * %2d表示输出宽度为2的整数,超过2位则按实际数据输出,不足2位则右对齐输出
         * %02d表示输出宽度为2的整数,超过2位则按实际数据输出,不足2位则前置补0
         * %5.2f表示输出宽度为5的浮点数,其中小数点后2位,不足5位则右对齐输出
         */
        printf("%04d-%02d-%02d\n", year, month, day);
    }
    return 0;
}

5 手机键盘–清华大学

描述

按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符,需要计算出它所需要花费的时间。

输入描述:

一个长度不大于100的字符串,其中只有手机按键上有的小写字母

输出描述:

输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间

示例1

输入:

bob
www

输出:

7
7

题解:

手机按键如下:

img

因为有些按键上面有三个字母,有些有四个字母,显然很难找到规律。所以,我们采用预处理策略,采取空间换时间的方式,将每个字母需要的按键次数先记录起来。每当遇到一个字母,直接访问数组便可得到该字母的按键次数。

由此,可得
abc   def   ghi   jkl   mno   pkrs   yuv   wxyz
123   123   123   123   123   1234   123   1234

定义一维数组,记录按键次数
int keyTable[26] = {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};

还有另外一个问题,若两个连续的字符来自同一个按键,按完第一个后中间需要等到一个时间段才能按第二个,那要怎么知道两个字符是否来自同一按键呢?

观察可知,若两个字符来自同一个按键,则字符之间的差值等于两个字符按键次数的差值。

对于与a和c,则有
字符的差值:c-a = 67-65 = 2
字符按键次数的差值:3-1 = 2

对于s和p,则有
字符的差值:s-p = 99-96 = 3
字符按键次数的差值:4-1 = 3
#include <iostream>
#include <cstdio>

using namespace std;

/*
 * 字符对应的按键次数
 */
int keyTable[26] = {1, 2, 3, 1, 2, 3, 1, 2, 3,
                    1, 2, 3, 1, 2, 3, 1, 2, 3,
                    4, 1, 2, 3, 1, 2, 3, 4};

/**
 * 手机按键--清华大学
 * @return
 */
int main() {
    string str;
    while (cin >> str) {
        int time = 0;
        for (int i = 0; i < str.size(); ++i) {
            time += keyTable[str[i] - 'a'];
            //连续的字符来自同一个按键
            if (i != 0 && (str[i] - str[i - 1] ==
                           keyTable[str[i] - 'a'] - keyTable[str[i - 1] - 'a'])) {
                time += 2;
            }
        }
        cout << time << endl;
    }
    
    return 0;
}

三、总结

本章学习收获颇丰,很多的题目都是来自于各大名校的复试题,记录一下笔记,方便自己回顾。

参考教材–《王道计算机考研——机试指南》

华为机试真题 Java&Go 实现【数字涂色】 疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。现在请你帮帮小朋友们,算算最少需要多少种颜色才能给这N个数进行上色。 阅读详情

相关推荐

华为OD机试 - 二进制差异数(Java)

那么差异值就是0110,相似值就是1000,可以发现,A,B最高位的1,在按位异或运算下被换成0,在按位与的运算下,变成了1,因此这种情况下,相似值必然大于差异值,不符合要求。那么差异值就是1100,相似值就是0010,可以发现,A,B的最高位不同,因此按位异或运算下被换成了1,而按位与运算下变成了0,因此这种情况下,差异值必然大于相似值,符合要求。有了以上规律,我们可以统计出,每个数的最高位1处于哪一位,最高位1所处位数相同的数之间无法组合,最高位1所处位数不同的数之间可以组合。假设A=5,B=3;

qq_34143141的博客 204

华为-分配捐款

华为笔试,滑动窗口

qq_40092601的博客 1025

【华为OD机试 2023】 不含101的数(C++ Java JavaScript Python 100%)

小明在学习二进制时,发现了一类不含 101的数,也就是: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 \[l,r\] ,请问这个区间包含了多少个不含 101 的数?

2301_77273748的博客 4990

消息传递

【题目描述】 NOI班有n位学员,因为相处时间有限,有的学员之间加了微信,有的学员之间没有。假设加微信的关系是相互的,即如果a加了b的微信,b也会加a的微信。现在有一条NOI班上的爆炸性的新闻从1号学员发出,每个看到这个新闻的NOI班学员都会在朋友圈转发,而加了他微信的朋友都会看到。没有在NOI班上的学员都不会转发(因为和自己关系不大)。告诉你NOI班上的学员之间的微信好友关系,请问最终有多少个学...

lu_zirui的博客 1586

增强的strstr

现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊査询,与strstr一样返回首次查找到的字符串位置可选段使用“"“标识,表示该位置是可选段中任意一个字符即可满足匹配条件。与strstr函数不同,返回的是源字符串中,匹配子字符串相对于源字符串地址的偏移(从0开始算),如果没有匹配返回-1。1. 可选段表示:目标字符串中的可选段用方括号`[]`表示,其中的字符为可以替代该位置的任意一个字符。2. 目标字符串 (needle):需要在源字符串中查找的模式,可能包含可选段(用“[]”表示)。

面试高手的博客 3112

XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD

XC95144XL-10TQG144I 属于 Xilinx 的 XC9500XL 高性能 CPLD 家族,是一颗面向 3.3V 低电压系统的可编程逻辑器件。该器件以小封装、高速响应和良好的系统兼容性为设计目标,常用作系统控制/ glue-logic、I/O 缓冲、状态机、总线桥接与接口协议前端等场景中的可重编程逻辑单元。产品支持现场(in-system)编程与 IEEE-1149.1 JTAG 边界扫描,能在系统板上直接更新逻辑。

2403_90082736的博客 1059

动态规划问题综合

参考代码 最长公共子串 def slt(str1,str2): value=[[0 for i in range(len(str2)+1)] for j in range(len(str1)+1)] substr='' length = 0 for i in range(len(str1)): for j in range(len(str...

qq_40415753的博客 352

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 391

1000以内因数查找

#include<stdio.h> int main() { int n=0,i=0,sum; for (n = 2; n < 1000; n++) { sum = 0; for (i = 1; i < n; i++) { if (n%i == 0) { sum += i; } } if (sum == n) { printf(...

m0_69920115的博客 231

C++碰撞检测库FCL安装(MinGW,CMake)

FCL碰撞检测库、libccd\Eigen库编译配置,全流程问题记录

weixin_45650767的博客 4674

TCP Reno/CUBIC 拥塞控制算法对比:从 Tahoe 到 BBR 的 4 种核心策略演进

本文深入解析了TCP拥塞控制算法的演进历程,从经典的Tahoe、Reno到现代的CUBIC和BBR,详细对比了4种核心策略的实现机制与性能差异。通过分析拥塞窗口、流量控制等关键技术,揭示了不同算法在高带宽延迟网络中的优化方向,为网络协议栈优化提供理论依据和实践指导。

weixin_33725239的博客 439

c语言题库

c 1 C语言程序的基本单位是__________ A) 程序行 B) 语句 C) 函数 D) 字符 C 2 C语言程序的三种基本结构是__________ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构 A 3 C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用 A 4

ZJC'博客 1万+

用AI从0开始量化交易-制定学习计划安装学习环境

量化小白,利用AI从零开始学量化

weixin_52285994的博客 2112

复试机试帖1:暴力求解

复试机试1-1: 暴力枚举

qq_52524458的博客 120

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6477

YOLOv11涨点改进 | 全网创新首发、主干改进篇 | CVPR 2025 | RAVLT主干让 YOLOv11 更加强大!通过增强线性注意力机制,特别在小目标和复杂背景的检测上表现突出

本文提出RAVLT主干网络,通过改进YOLOv11的空间特征建模能力,显著提升小物体和复杂背景检测性能。RAVLT采用秩增强线性注意力(RALA)机制,在保持线性计算复杂度的同时解决传统线性注意力低秩问题。RALA通过增强KV缓冲区和输出特征矩阵的秩,提高特征多样性和建模能力。实验表明,RAVLT在ImageNet-1k上达到84.4% Top-1准确率,仅需2600万参数和4.6GFLOPs,性能优于现有线性注意力模型。文章详细介绍了RAVLT模块结构、实现原理及在YOLOv11中的集成方法,包含四种主干

Ai缝合怪、助力小伙伴高效发论文 636

机试_1_暴力求解_习题

学习第一章完之后,当然要做相应地练习啦~ 注:上述习题都可以在牛客进行测试,其他题目在“题目列表”中基本都可以找到。另外,此文章仅仅是提供解题思路,并非最优解。

Window_mouse的博客 817

C#实战:从零搭建Vosk离线语音转文字系统

本文手把手教你用C#构建离线语音转文字系统,基于NAudio和Vosk实现全流程开发。首先介绍环境搭建,包括NuGet包安装和中文模型配置,强调16kHz单声道音频格式的关键性。接着详细解析音频预处理转换、Vosk模型初始化及识别过程的核心代码,提供多线程优化建议和实时识别扩展思路。文章包含80%以上代码注释,从常见问题排查到性能优化技巧,完整覆盖从"Hello World"到工业级部署的关键技术点,特别适合需要开发本地化语音识别应用的C#开发者。

墨夶的博客 752

复试机试算法总结#1:暴力求解

暴力求解问题时,首先对问题规模进行判断,符合题目要求才能使用 1.枚举 1.1求反序数 求一个数的反序数,eg:1234的反序数是4321 int Reverse(int x) { int revx=0; while(x!=0) { revx *= 10;//不断对revx进行乘运算 revx += x % 10; ...

学而不思则忘,思而不学则die 215

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

机试指南part1——暴力求解

枚举:所以可能的情况 如何判断能否使用枚举?分析数据量 不常见等式算法时间复杂度: ...

qq_42254342的博客 179

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

西电复试机试2017年第四题

购票时,一个人可能购一张或名张票,最多不超过5张,如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第一排是6到 10号。第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。算法很笨,但是在考场的情况下可能最先想到的是暴力求解,因为这样的思维量最少。对于购票指令p,输出p张车票的编号,按从小到大排序。输入的第一行包含一个整数n,表示购票指令的数量。数据结构的选择很重要。

qq_62799431的博客 296

力扣刷题——599. 两个列表的最小索引总和

题目:来源于力扣 分析: 看完题目后,我最先想到的是用哈希表,但是我在准备一场机试,机试的编译环境不能使用哈希表。 所以我又想到了暴力求解(●ˇ∀ˇ●) **思路:**两个for循环,外层控制 list1,内层控制 list2,把 两个vector容器中相同字符串 索引之和 的 最小值求出。然后再用两个for循环找到和该最小值相同的 字符串下标,之后存入vector容器中 中间有想到过用 set_intersection求两个容器的交集,而使用 set_intersection 要求两个容器的数据是有序排

javemalloc的博客 255

直线上最多的点数

149. 直线上最多的点数 题目: 给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 解法1:暴力求解 思路: 利用基准点和斜率(y1-y1/x1-x2),两层循环,每次将与基准点构成的不同斜率存在hash中,相同则计数,一趟下来求max。 注意点:需要区别y1-y2 === 0 和 x1-x2 === 0 的情况。 时间复杂度: O(n^2) 空间复杂度:O(n) var maxPoints = funct

Garbrielle的博客 454

【华为机试真题详解】机试题按知识点整理(入门指引)

【华为机试真题 Python实现】【2022 Q1 Q2 | 100分】《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!本文解法非最优解(即非性能最优)。专栏的题目,麻烦都收藏,点赞一下,支持一下,感谢!!【牛客网】 HJ5 进制转换 【牛客网】 HJ1 字符串最后一个单词的长度HJ17 坐标移动 (中等) HJ20 密码验证合格程序(中等) HJ33 整数与IP地址间的转换(中等)【机试真题】字

1万+

C++暴力求解

暴力求解是一种直接而简单的算法,它通过穷举所有可能的解决方案来解决问题。这种方法通常不依赖于任何特定的算法或数据结构,而是通过遍历所有可能的解决方案来找到最优解,其算法类似于枚举,它通常被称为直接带入法,是一种古老且直接的数学计算法则,最早见于欧几里得的《几何原本》。这种方法不需要复杂的逻辑推理或者定理证明,而是直接将数值代入公式中进行计算。在实际应用中,我们需要根据问题的规模和要求来判断是否使用暴力求解算法。

PingdiGuo_guo的博客 1579

算法基础知识——暴力求解

暴力求解: 一、基础知识: 1、枚举 2、模拟(图形排版、日期、其他) 二、应用实例: 1、反序数【清华大学】 2、对称平方数【清华大学】 3、与7无关的数【北京大学】 4、百钱买百鸡问题【华为机试】 5、Old Bill【上海交通大学】 6、输出梯形【清华大学】 7、叠框【王道机试】 8、Repeater【北京大学】 9、Hello World for U【浙江大学】 10、今年的第几天?【清华大学】 11、打印日期【华中科技大学】 12、日期累加【北京理工大学】 13、日期差值【上海交通大学】

Remoa的休闲茶馆 2848
上一篇: PTA_1_基础编程题目集
下一篇: 机试_1_暴力求解_习题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值