当前位置: 首页 > news >正文

2.11寒假

今天复习了深搜和广搜然后做了作业中的一个题目。

解析:外层 for 循环:for (int i = 1; i <= n; i++),循环变量 i 从 1 递增到 n,表示要依次将数字 1 到 n 分配到数组 a 中。内层 for 循环:for (int j = 1; j <= 2; j++),内层循环控制每次寻找合适位置的步数,每次要找到两个合适的位置。s++:位置指针 s 向后移动一位。if (s > n) { s = 1; }:如果 s 超过了数组的长度 n,则将 s 重置为 1,实现循环查找。if (a[s] != 0) { j--; }:如果当前位置 s 已经被分配了值(即 a[s] 不为 0),则将内层循环的计数器 j 减 1,意味着需要重新寻找一个合适的位置。a[s] = i;:当内层循环结束后,说明已经找到了合适的位置,将当前的数字 i 存储到数组 a 的 s 位置。

#include <stdio.h>
int a[1000001], n, s;
int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= 2; j++) {
            s++;
            if (s > n) {
                s = 1;
            }
            if (a[s] != 0) {
                j--;
            }
        }
        a[s] = i;
    }
    for (int i = 1; i <= n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

解析:x[9]y[9]:这两个数组用于表示 8 个方向的偏移量,分别对应水平和垂直方向的移动。索引从 1 到 8 分别代表 8 个不同的方向。

#include <stdio.h>
#include <stdbool.h>
int x[9] = {0, 1, 0, 1, -1, 0, -1, 1, -1};
int y[9] = {0, 0, 1, 1, 0, -1, -1, -1, 1};
char str[9] = " yizhong";
char a[103][103];
bool s[102][102]; 
bool f(int i, int j, int m, int n, int next) {
    if (next >= 8) {
        s[i][j] = 1;
        return 1;
    }
    if (a[i + m][j + n] == str[next]) {
        if (f(i + m, j + n, m, n, next + 1)) {
            s[i][j] = 1;
            return 1;
        }
    }
    return 0;
}
int main() {
    int c[10000][2], d = 0;
    int n, i, j, o;
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            scanf(" %c", &a[i][j]);
            if (a[i][j] == 'y') {
                c[++d][0] = i;
                c[d][1] = j;
            }
        }
    }
    while (d) {
        i = c[d][0];
        j = c[d][1];
        for (o = 1; o <= 8; o++) {
            if (a[i + x[o]][j + y[o]] == 'i') {
                if (f(i + x[o], j + y[o], x[o], y[o], 3)) {
                    s[i][j] = 1;
                }
            }
        }
        d--;
    }
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            if (s[i][j]) {
                printf("%c", a[i][j]);
            } else {
                printf("*");
            }
        }
        printf("\n");
    }
    return 0;
}

http://www.dtcms.com/a/17256.html

相关文章:

  • SiliconCloud 支持deepseek,送2000w token
  • 使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南
  • 剑指offer第2版:搜索算法(二分/DFS/BFS)
  • 算法练习——哈希表
  • Python实现从SMS-Activate平台,自动获取手机号和验证码(进阶版2.0)
  • 前端包管理器的发展以及Npm、Yarn和Pnpm对比
  • AWTK fscript 中的 TCP/UDP 客户端扩展函数
  • C++课程设计 运动会分数统计(含源码)
  • 打开游戏缺少C++组件怎么修复?缺少C++组件问题的解决方法
  • FastAPI 高并发与性能优化
  • XXL-Job源码分析
  • 2024春秋杯网络安全联赛冬季赛wp
  • Jenkins+gitee 搭建自动化部署
  • 基于带通滤波的camera脏污检测算法可以完全替代imatest
  • AIGC与AICG的区别解析
  • 深入理解DOM:22个核心知识点与代码示例
  • k8s worker 节点使用kubectl 命令
  • Huatuo热更新--安装HybridCLR
  • 【计算机视觉】文本识别
  • 【Java】实现后端请求接口
  • 组合的输出(信息学奥赛一本通-1317)
  • 关于防火墙运维面试题2
  • DirectShow基类文件和帮助文档
  • 【无标题】基于AIX的DB2 10.1安装配置规范
  • Qt的QTreeWidget样式设置
  • Linux进阶——防火墙
  • 【鸿蒙开发】第三十章 应用稳定性-检测、分析、优化、运维汇总
  • 数据结构——二叉树(2025.2.12)
  • 用大模型学大模型04-模型与网络
  • 负载测试和压力测试的原理分别是什么