首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >驭码——C++语言算法强度测试

驭码——C++语言算法强度测试

作者头像
红目香薰
发布于 2025-06-08 03:39:56
发布于 2025-06-08 03:39:56
8700
代码可运行
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode
运行总次数:0
代码可运行

自测-双指针算法

先让AI自己出一个C++的双指针题目。

基础算法题目还成。

经典算法-八皇后

经典八皇后题目也是没有问题的。

这是给的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <vector>
using namespace std;

class NQueens {
public:
    vector<vector<string>> solveNQueens(int n) {
        vector<vector<string>> solutions;
        vector<string> board(n, string(n, '.'));  // 初始化棋盘
        backtrack(0, board, solutions);
        return solutions;
    }

private:
    void backtrack(int row, vector<string>& board, vector<vector<string>>& solutions) {
        if (row == board.size()) {
            solutions.push_back(board);
            return;
        }
        
        int n = board.size();
        for (int col = 0; col < n; col++) {
            if (isValid(board, row, col)) {
                board[row][col] = 'Q';  // 放置皇后
                backtrack(row + 1, board, solutions);  // 递归下一行
                board[row][col] = '.';  // 回溯
            }
        }
    }
    
    bool isValid(vector<string>& board, int row, int col) {
        // 检查上方列
        for (int i = 0; i < row; i++) {
            if (board[i][col] == 'Q') {
                return false;
            }
        }
        
        // 检查左上方对角线
        for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
            if (board[i][j] == 'Q') {
                return false;
            }
        }
        
        // 检查右上方对角线
        for (int i = row - 1, j = col + 1; i >= 0 && j < board.size(); i--, j++) {
            if (board[i][j] == 'Q') {
                return false;
            }
        }
        
        return true;
    }
};

// 打印解决方案
void printSolutions(const vector<vector<string>>& solutions) {
    for (size_t k = 0; k < solutions.size(); k++) {
        cout << "Solution " << k + 1 << ":" << endl;
        for (const auto& row : solutions[k]) {
            cout << row << endl;
        }
        cout << endl;
    }
}

int main() {
    int n = 8;
    NQueens solver;
    vector<vector<string>> solutions = solver.solveNQueens(n);
    
    cout << "Total solutions for " << n << " queens: " << solutions.size() << endl;
    cout << "First 2 solutions:" << endl;
    printSolutions(vector<vector<string>>(solutions.begin(), solutions.begin() + min(2, (int)solutions.size())));
    
    return 0;
}

基本难度-我们的征途是星辰大海

最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成。 共有四种方格: ‘.’  代表空地,curiosity可以穿过它 ‘#’  代表障碍物,不可穿越,不可停留 ‘S’  代表curiosity的起始位置 ‘T’  代表curiosity的目的地 NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。

输入格式

第一行是一个整数T,代表有几个测试样例  每个测试样例第一行是一个整数N(1< =N< =50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的  一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000. 

输出格式

对于每个询问输出单独的一行:  “I  get  there!”:执行给出的命令后curiosity最终到达了终点。  “I  have  no  idea!”:执行给出的命令后curiosity未能到达终点。  “I  am  dizzy!”:curiosity在执行命令的过程中撞到了障碍物。  “I  am  out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。 

样例输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2 
2 
S. 
#T 
2 
RD 
DR 
3 
S.# 
.#. 
.T# 
3 
RL 
DDD 
DDRR 

样例输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
I get there!
I am dizzy!
I have no idea!
I am out!
I get there!

理解效果:

实际返回测试,判断是出来的,但是结果有些异常,但是整体上基本给出了答案,还不错。

难度升级-第六届蓝桥杯国赛第六题-至今无解

蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距离为di。 每年,蓝桥村都要举行一次集会。今年,由于村里的人口太多,村委会决定要在4个地方举行集会,其中3个位于公路中间,1个位最公路的终点。 已知每户家庭都会向着远离公路起点的方向去参加集会,参加集会的路程开销为家庭内的人数ti与距离的乘积。 给定每户家庭的位置di和人数ti,请为村委会寻找最好的集会举办地:p1, p2, p3, p4 (p1<=p2<=p3<=p4=L),使得村内所有人的路程开销和最小。 【输入格式】 输入的第一行包含两个整数n, L,分别表示蓝桥村的家庭数和公路长度。 接下来n行,每行两个整数di, ti,分别表示第i户家庭距离公路起点的距离和家庭中的人数。 【输出格式】 输出一行,包含一个整数,表示村内所有人路程的开销和。 【样例输入】 6 10 1 3 2 2 4 5 5 20 6 5 8 7 【样例输出】 18 【样例说明】 在距起点2, 5, 8, 10这4个地方集会,6个家庭需要的走的距离分别为1, 0, 1, 0, 2, 0,总的路程开销为1*3+0*2+1*5+0*20+2*5+0*7=18。 【数据规模与约定】 对于10%的评测数据,1<=n<=300。 对于30%的评测数据,1<=n<=2000,1<=L<=10000,0<=di<=L,di<=di+1,0<=ti<=20。 对于100%的评测数据,1<=n<=100000,1<=L<=1000000,0<=di<=L,di<=di+1,0<=ti<=1000000。 资源约定: 峰值内存消耗(含虚拟机) < 512M CPU消耗  < 8000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。 不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。

超时:

总结

在代码上表现出的结果还是非常惊人的,不过在算法上还是有一定的瓶颈需要逐一突破,能帮我们写完基础数据的增删改查就已经很厉害了呢,这并是基础的重复性工作,我们可以节约出来这些时间做一些更有意义的事情。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验