[解题报告]【第25题】求所有 1 到 5 的全排列 | 令人窒息的 for 循环

简介: [解题报告]【第25题】求所有 1 到 5 的全排列 | 令人窒息的 for 循环

全文目录

 零、写在前面

 一、主要知识点

          全排列的求法

 二、课后习题

          392. 判断子序列

          240. 搜索二维矩阵 II

          2006. 差的绝对值为 K 的数对数目

写在最后

零、写在前面

今天是c语言基础打卡的第25天,今天我尝试使用markdown来编辑这些内容完善这部分的所有题解吧。

【第25题】求所有 1 到 5 的全排列 | 令人窒息的 for 循环


一、主要知识点

多层for循环


全排列的求法

求1-5的全排列


int h[6];
int main() {
    int i, j, k, l, m;
    for(i = 1; i <= N; ++i) {
        h[i] = 1;                               //标记i  
        for(j = 1; j <= N; ++j) {
            if(h[j]) continue;                   //判断是否重复
            h[j] = 1;
            for(k = 1; k <= N; ++k) {
                if(h[k]) continue;               //判断是否重复
                h[k] = 1;
                for(l = 1; l <= N; ++l) {
                    if(h[l]) continue;           //判断是否重复
                    h[l] = 1; 
                    for(m = 1; m <= N; ++m) {
                          if(h[m]) continue;     //判断是否重复
                          printf("%d%d%d%d%d\n", i, j, k, l, m);
                    }
                    h[l] = 0;                    //还原
                }
                h[k] = 0;                        //还原
            }
            h[j] = 0;                            //还原
        }
        h[i] = 0;                                //还原
    }
    return 0;
}


二、课后习题

392. 判断子序列

392. 判断子序列


给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。


解题思路


根据要求依次判断就好了,但是要注意边界情况。


bool isSubsequence(char * s, char * t){
    if(!t[0]&&!s[0])  return true;//都是空串
    else if(!t[0])  return  false;//只有目标串是空串
    int low = 0,high = 0;//开始对比
    while(s[low]&&t[high]){
        while(t[high]&&s[low] != t[high]) high++;//不同则继续往后找
        if(!t[high]) return false;//high已经到末尾了 但是low还没
        low++;high++;//两者同时往后走
    }
    if(!s[low]) return true;//low到末尾了说明匹配完结
    return false;
}


240. 搜索二维矩阵 II

240. 搜索二维矩阵 II


编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:


每行的元素从左到右升序排列。

每列的元素从上到下升序排列。

解题思路


一开始的思路肯定是从右小角开始判断,但是能排除的情况会很复杂。

但是换一个思路,从右上角开始判断的话,每次都能消去一行或者一列。当超出表示范围的时候就说明没找到。


bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target){
    int row = matrixColSize[0] -1,col = 0;//查找的初始位置
    while(row>=0 && col < matrixSize){
        if(matrix[col][row] > target)   row--;//大于 消去一列往左走
        else if(matrix[col][row] < target)  col++;//小于 消去一行往下走
        else return true;
    }
    return false;
}


2006. 差的绝对值为 K 的数对数目

2006. 差的绝对值为 K 的数对数目


给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。

|x| 的值定义为:


如果 x >= 0 ,那么值为 x 。

如果 x < 0 ,那么值为 -x 。

解题思路


简单的双循环。

int countKDifference(int* nums, int numsSize, int k){
    int i,j,x;
    int t = 0;
    for(i=0;i<numsSize;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
           x=nums[i]-nums[j];
           if(x>0) x=x; //取绝对值
           else  x=-x;
           if(x==k) t++;  //是否满足要求
        }
    }
    return t;
}



相关文章
|
IDE Java 开发工具
java编译通过,运行却提示找不到或无法加载主类的解决方案
java编译通过,运行却提示找不到或无法加载主类的解决方案
1743 0
|
Linux 容器 Docker
Debian配置系统中文语言及环境
Debian配置系统中文语言及环境
11870 1
|
8月前
|
数据采集 存储 调度
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
在Python网页抓取领域,BeautifulSoup和Scrapy是两款备受推崇的工具。BeautifulSoup易于上手、灵活性高,适合初学者和简单任务;Scrapy则是一个高效的爬虫框架,内置请求调度、数据存储等功能,适合大规模数据抓取和复杂逻辑处理。两者结合使用可以发挥各自优势,例如用Scrapy进行请求调度,用BeautifulSoup解析HTML。示例代码展示了如何在Scrapy中设置代理IP、User-Agent和Cookies,并使用BeautifulSoup解析响应内容。选择工具应根据项目需求,简单任务选BeautifulSoup,复杂任务选Scrapy。
157 1
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
|
9月前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
279 13
|
10月前
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
173 3
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
【10月更文挑战第31天】2024年,AI大模型在软件开发领域的应用取得了显著进展,从自动化代码生成、智能代码审查到智能化测试,极大地提升了开发效率和代码质量。然而,技术挑战、伦理与安全问题以及模型可解释性仍是亟待解决的关键问题。开发者需不断学习和适应,以充分利用AI的优势。
|
11月前
|
Java
Java“NumberFormatException”解决
当尝试将字符串转换为数字时,若字符串格式不正确,则会抛出“NumberFormatException”。解决方法:1. 检查字符串是否为空或仅包含空白字符;2. 确保字符串中的字符都是数字;3. 使用异常处理捕获并处理该异常。
533 1
|
存储 人工智能 安全
使用‘消除’技术绕过LLM的安全机制,不用训练就可以创建自己的nsfw模型
本文探讨了一种名为“abliteration”的技术,该技术能够在不重新训练大型语言模型(LLM)的情况下移除其内置的安全审查机制。通常,LLM在接收到潜在有害输入时会拒绝执行,但这一安全特性牺牲了模型的灵活性。通过对模型残差流的分析,研究人员发现可以识别并消除导致拒绝行为的特定方向,从而允许模型响应所有类型的提示。
1622 1
|
12月前
|
人工智能 数据可视化 Java
完全私有化部署!一款开源轻量级网站防火墙!
完全私有化部署!一款开源轻量级网站防火墙!
|
编解码 开发者 Python
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
1786 0