3.09 复试学习

oj125 回文+镜面

cpp 复制代码
#include <iostream>
#include <bits/stdc++.h>

using namespace std;
//镜面表
char mirror[256]={0};
void initMirror(){
    mirror['A']='A';mirror['M']='Y';mirror['Y']='Y';
    mirror['E']='3';mirror['O']='O';mirror['Z']='5';
    mirror['H']='H';mirror['S']='2';mirror['1']='1';
    mirror['I']='I';mirror['T']='T';mirror['2']='S';
    mirror['J']='L';mirror['U']='U';mirror['3']='E';
    mirror['L']='J';mirror['V']='V';mirror['5']='Z';
    mirror['W']='W';mirror['X']='X';mirror['8']='8';
}
//判断是否回文
bool isHuiwen(const string& s){
    int n=s.size();
    for(int i=0;i<n/2;i++){
        if(s[i]!=s[n-1-i]){
           return false;
           }
    }
    return true;
}
//判断是否镜面
bool isMirror(const string& s){
    int n=s.size();
    for(int i=0;i<n;i++){
            char c=s[i];
            char exc=s[n-1-i];
        if(mirror[c]==0){
            return false;
        }
        if(mirror[c]!=exc){
            return false;
        }
    }
    return true;
}

int main()
{
    initMirror();//直接调入就行
    string s;
    while(cin>>s){
        bool huiwen=isHuiwen(s);
        bool mirr=isMirror(s);

        if(!huiwen&&!mirr){
            cout<<s<<" -- is not a palindrome."<<endl;
        }else if(huiwen&&!mirr){
            cout<<s<<" -- is a regular palindrome."<<endl;
        }else if(!huiwen&&mirr){
            cout<<s<<" -- is a mirrored string."<<endl;
        }else if(huiwen&&mirr){
            cout<<s<<" -- is a mirrored palindrome."<<endl;
        }

        cout<<endl;

    }


    return 0;
}

利用数组,结合ASCII,构建对应数组。在main里直接调用init函数就好。回文的判断和镜面的判断,都可以用一维数组,对应位置去判断就好了。不修改的可以用const string& s,一般情况下,用string s就足够了。

oj126 数列2

可以不连续-枚举子集

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        int a[15];
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }

        int count = 0;
        // 枚举所有非空子集 (mask 从 1 到 2^n - 1)
        for (int mask = 1; mask < (1 << n); mask++) {
            int sum = 0;
            for (int i = 0; i < n; i++) {
                if (mask & (1 << i)) { // 检查第i位是否选中
                    sum += a[i];
                }
            }
            if (sum % 11 == 0) {
                count++;
            }
        }
        cout << count << endl;
    }
    return 0;
}

oj111 统计选票

cpp 复制代码
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>

using namespace std;

struct candidate {
    string name;
    int result;
};

// 自定义排序规则
bool compareCandidates(const candidate& a, const candidate& b) {
    if (a.result != b.result) {
        return a.result > b.result; // 票数多的在前
    }
    return a.name > b.name; // 票数相同
}

int main() {
    candidate H[3];
    H[0] = {"zhang", 0};
    H[1] = {"li", 0};
    H[2] = {"wang", 0};

    int wrong_count = 0;

    for (int i = 0; i < 10; i++) {
        string s;
        cin >> s;

        // 转小写
        for (size_t j = 0; j < s.length(); j++) {
            s[j] = tolower((unsigned char)s[j]);
        }

        if (s == "zhang") {
            H[0].result++;
        } else if (s == "li") {
            H[1].result++;
        } else if (s == "wang") {
            H[2].result++;
        } else {
            wrong_count++;
        }
    }

    // 排序!
    sort(H, H + 3, compareCandidates);

    // 输出排序后的结果
    for (int i = 0; i < 3; i++) {
        cout << H[i].name << ":" << H[i].result << endl;
    }

    // 输出废票
    cout << "Wrong election:" << wrong_count << endl;

    return 0;
}

数组 记得初始化

观察输入情况,记得全转为大写/小写,要利用数组一位一位转;注意数组要如何用sort

oj63 哥德巴赫

素数判断+按题目要求;找出关系等式即可。

cpp 复制代码
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

//素数判断
bool isSushu(int n){
    if(n<2) return false;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}

int main()
{
    int n;
    while(n--){
            int a;
        cin>>a;
        //找
        for(int p=2;p<a/2;p++){
            int q=a-p;
            if(isSushu(p)&&isSushu(q)){
                cout<<p<<" "<<q<<endl;
                break;//找到立马停 换
            }
        }
    }
    return 0;
}

oj78 方块转换

找好对应关系

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

// 比较两个矩阵是否相等
bool equal(const vector<string>& a, const vector<string>& b) {
    return a == b;
}

// 顺时针旋转90度
vector<string> rotate90(const vector<string>& grid) {
    int n = grid.size();
    vector<string> res(n, string(n, ' '));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            res[i][j] = grid[n - 1 - j][i];
        }
    }
    return res;
}

// 水平翻转(左右镜像)
vector<string> flipHorizontal(const vector<string>& grid) {
    int n = grid.size();
    vector<string> res = grid;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n / 2; j++) {
            swap(res[i][j], res[i][n - 1 - j]);
        }
    }
    return res;
}

int main() {
    int n;
    cin >> n;
    
    vector<string> original(n);
    for (int i = 0; i < n; i++) {
        cin >> original[i];
    }
    
    vector<string> target(n);
    for (int i = 0; i < n; i++) {
        cin >> target[i];
    }
    
    // 尝试所有变换(按优先级顺序)
    vector<string> current;
    
    // #1: 90度
    current = rotate90(original);
    if (equal(current, target)) {
        cout << 1 << endl;
        return 0;
    }
    
    // #2: 180度
    current = rotate90(current); // 90+90=180
    if (equal(current, target)) {
        cout << 2 << endl;
        return 0;
    }
    
    // #3: 270度
    current = rotate90(current); // 180+90=270
    if (equal(current, target)) {
        cout << 3 << endl;
        return 0;
    }
    
    // #4: 水平翻转
    vector<string> flipped = flipHorizontal(original);
    if (equal(flipped, target)) {
        cout << 4 << endl;
        return 0;
    }
    
    // #5: 翻转 + 旋转(90, 180, 270)
    current = rotate90(flipped);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    current = rotate90(current);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    current = rotate90(current);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    // #6: 不变
    if (equal(original, target)) {
        cout << 6 << endl;
        return 0;
    }
    
    // #7: 无效
    cout << 7 << endl;
    return 0;
}

oj71 发牌

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

// 比较两个矩阵是否相等
bool equal(const vector<string>& a, const vector<string>& b) {
    return a == b;
}

// 顺时针旋转90度
vector<string> rotate90(const vector<string>& grid) {
    int n = grid.size();
    vector<string> res(n, string(n, ' '));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            res[i][j] = grid[n - 1 - j][i];
        }
    }
    return res;
}

// 水平翻转(左右镜像)
vector<string> flipHorizontal(const vector<string>& grid) {
    int n = grid.size();
    vector<string> res = grid;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n / 2; j++) {
            swap(res[i][j], res[i][n - 1 - j]);
        }
    }
    return res;
}

int main() {
    int n;
    cin >> n;
    
    vector<string> original(n);
    for (int i = 0; i < n; i++) {
        cin >> original[i];
    }
    
    vector<string> target(n);
    for (int i = 0; i < n; i++) {
        cin >> target[i];
    }
    
    // 尝试所有变换(按优先级顺序)
    vector<string> current;
    
    // #1: 90度
    current = rotate90(original);
    if (equal(current, target)) {
        cout << 1 << endl;
        return 0;
    }
    
    // #2: 180度
    current = rotate90(current); // 90+90=180
    if (equal(current, target)) {
        cout << 2 << endl;
        return 0;
    }
    
    // #3: 270度
    current = rotate90(current); // 180+90=270
    if (equal(current, target)) {
        cout << 3 << endl;
        return 0;
    }
    
    // #4: 水平翻转
    vector<string> flipped = flipHorizontal(original);
    if (equal(flipped, target)) {
        cout << 4 << endl;
        return 0;
    }
    
    // #5: 翻转 + 旋转(90, 180, 270)
    current = rotate90(flipped);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    current = rotate90(current);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    current = rotate90(current);
    if (equal(current, target)) {
        cout << 5 << endl;
        return 0;
    }
    
    // #6: 不变
    if (equal(original, target)) {
        cout << 6 << endl;
        return 0;
    }
    
    // #7: 无效
    cout << 7 << endl;
    return 0;
}

翻译:

With the increasing popularity of smart wearable devices, such as earbuds and smart watches, presents new challenges for seamless and secure user authentication due to their limited user interfaces. Conventional biometric methods, including voice, fingerprints, and facial recognition often face issues such as usability limitations, interference from noise, or vulnerability to spoofing attacks. This paper introduces a novel authentication system called BaroAuth, which utilizes the stable and unique Speech-aware Pressure Sequences (SPSs) patterns captured by a miniaturized MEMS barometer embedded in earbuds. The design of BaroAuth hinges on two important observations. First, the production of speech relies on the coordinated movements of articulatory organs, including the tongue, jaw, and soft palate. These organs, through the activity of the temporomandibular joint (TMJ), alter the shape of the ear canal, thereby causing subtle pressure changes that encode the speaker's unique physiological characteristics and articulatory dynamics. Second, SPSs show significant intra-individual consistency and considerable inter-individual variability, which barometers can effectively measure. Meanwhile, we develop the BaroAuth prototype and carry out comprehensive experiments based on it. The experimental findings reveal that BaroAuth demonstrates a mean false-acceptance rate (FAR) of 0.41% and a false-rejection rate (FRR) of 1.23%, respectively, even under complex attack scenarios.

随着智能可穿戴设备(如耳机和智能手表)的日益普及,由于其用户交互界面受限,如何实现无缝且安全的用户认证成为了新的挑战。传统的生物识别方法(包括语音、指纹和面部识别)往往面临可用性受限、噪声干扰或易受欺骗攻击等问题。本文提出了一种名为 BaroAuth 的新型认证系统,该系统利用嵌入在耳机中的微型 MEMS 气压计所捕获的稳定且独特的"语音感知压力序列"(SPSs)模式。BaroAuth 的设计基于两个重要观察:首先,语音的产生依赖于发音器官(包括舌头、下颚和软腭)的协调运动。这些器官通过颞下颌关节(TMJ)的活动改变耳道的形状,从而引起细微的压力变化,这些变化编码了说话者独特的生理特征和发音动态。其次,SPSs 表现出显著的个体内一致性和相当大的个体间差异性,而气压计能够有效地测量这些特征。与此同时,我们开发了 BaroAuth 原型并进行了全面的实验。实验结果表明,即使在复杂的攻击场景下,BaroAuth 的平均误识率(FAR)仅为 0.41%,拒真率(FRR)为 1.23%。

基于深度学习的智能软件的可靠性已成为软件测试领域的一个关键挑战。本文首先概述了智能软件测试的核心概念,并从三个维度------数据、模型(即算法)和平台(即框架)------系统分析了削弱可靠性的主要不确定性来源。随后,文章识别出可靠性测试中的主要挑战,重点聚焦于测试用例生成、测试方法论以及评估标准。接着,总结了相关技术的最新进展。最后,提出了未来有前景的研究方向,旨在为推动可靠深度学习软件的发展提供新的见解。

相关推荐
香水5只用六神1 天前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件
郝学胜-神的一滴1 天前
系统设计与面向对象设计:两大设计思想的深度剖析
java·前端·c++·ue5·软件工程
入目星河滚烫1 天前
网易互娱2020校招在线笔试—游戏研发第一批—游泳池-研发
算法·笔试·数据结构与算法
xier_ran1 天前
【第一周】关键词解释:倒数排名融合(Reciprocal Rank Fusion, RRF)算法
开发语言·python·算法
spiritualfood1 天前
蓝桥杯大学b组水质检测
c语言·c++·算法·青少年编程·职场和发展·蓝桥杯
进击的小头1 天前
第6篇:贝尔曼最优化理论
python·算法·动态规划
EQUINOX11 天前
bitset + meet in the middle,P3067 [USACO12OPEN] Balanced Cow Subsets G
算法
庭前云落1 天前
从零开始的Hardhat学习 1| Hardhat 的基本使用、部署智能合约
学习·智能合约
四处炼丹1 天前
OpenClaw本地部署与Multi-Agent 技术分享
人工智能·算法·aigc·agent·ai编程
吃不饱的得可可1 天前
【三方库】jsoncpp
c++·json