蛇形填充数组 与 查找最接近的元素

蛇形填充数组

按副对角线分为两个三角处理:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin >> n;
    
    int arr[n][n];
    int num = 1;
    // 上半三角(包括主对角线)
    for (int k = 0; k < n; k++) {
        if (k % 2 == 0) { // 偶数k:从下到上(行减,列加)
            for (int i = k; i >= 0; i--) arr[i][k - i] = num++;
        } else { // 奇数k:从上到下(行加,列减)
            for (int i = 0; i <= k; i++) arr[i][k - i] = num++;
        }
    }

    // 下半三角(不包括主对角线)
    for (int k = n; k <= 2 * (n - 1); k++) {
        if (k % 2 == 0) { // 偶数k:从下到上
            for (int i = n - 1; i >= k - (n - 1); i--) arr[i][k - i] = num++;
        } else { // 奇数k:从上到下
            for (int i = k - (n - 1); i <= n - 1; i++) arr[i][k - i] = num++;
        }
    }

    // 输出
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

查找最接近的元素

二分查找查找其索引,按索引比较其两个。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin >> n;
    vector<int> arr(n);
    for(int i = 0;i<n;i++) cin >> arr[i];
    
    cin >> m;
    while(m--){
        int x;
        cin >> x;
        // 二分查找下界
        int pos = lower_bound(arr.begin(), arr.end(), x) - arr.begin();

        int ans;
        if (pos == 0) ans = arr[0];
        else if (pos == n) ans = arr[n - 1];
        else {// 比较 a[pos] 和 a[pos-1] 哪个更接近 x
            if (arr[pos] - x < x - arr[pos - 1]) ans = arr[pos];
            else ans = arr[pos - 1]; // 相等时取较小的(即左边的)
        }
        cout << ans << endl;
    }
    return 0;
}
相关推荐
zyeyeye9 分钟前
C++入门:从HelloWorld到命名空间揭秘
c语言·开发语言·c++·算法
牧羊人.33312 分钟前
动手学深度学习 04 | Dataset 和 DataLoader、数据增强
人工智能·pytorch·深度学习·算法
励志不掉头发的内向程序员13 分钟前
【LibreCAD 2D架构】从 addHistory 到 RS_UndoCycle:LibreCAD 里的两套 History 与撤销机制
开发语言·c++·qt·学习·系统架构
elseif12325 分钟前
【双指针/二分】P1102 A-B 数对
c++·算法·二分·双指针
电梯界知识分子26 分钟前
江西抚州临川九尊府五层别墅:受限楼梯间里,全黑铝合金观光井道配曳引龙门架的落地记录
大数据·前端·网络·算法·家用电梯
雪落漂泊30 分钟前
C++智能指针
开发语言·jvm·c++
木井巳35 分钟前
【记忆化搜索】斐波那契数
java·算法·leetcode·深度优先·剪枝·推荐算法
落魄大学生之流水线上谋生计35 分钟前
JVM内存结构、垃圾回收算法与类加载机制详解
jvm·算法
. . . . .37 分钟前
comfyUI原理
人工智能·算法·机器学习
淡海水40 分钟前
10-05-高级-模式匹配-CSharp如何改变与数据结构的交互方式
数据结构·算法·c#·模式匹配