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

找凶手,定名次,字符串旋转,杨氏矩阵

1.找凶手问题:

//题目名称:
//猜凶手
//题目内容:
//日本某地发生了一件谋杀案,警察通过排查确定凶手必为4个嫌疑犯的一个。
//以下为4个嫌疑犯的供词:
//A说:不是我
//B说:是C
//C说:是D
//D说:C在胡说
//已知3个人说的是真话,1个人说的是假话。
//请根据这些信息,写一个程序来确定到底谁是凶手

代码实现:

#include<Stdio.h>
int main()
{
    char killer = 0;
    for(killer = 'a';killer<='d';killer++)//循环,将每个人都假设为一次凶手
    {
        if((killer!='a') + (killer=='c') + (killer=='d') + (killer!='d') ==3 )//有三个人说了真话,一个人说了假话,那么四句话加起来的结果应该是3(解题关键!!!)
        {
         printf("killer = %c\n",killer);//只有c满足以上条件,所以只有c是凶手
        }
    }
}

2.定名次:

//解题思路:穷举法,列出每一种可能后再筛选
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    for(a = 1;a<=5;a++)
    {
        for(b = 1;b <= 5;b++)
        {
            for(c = 1;c<=5;c++)
            {
                for(d = 1;d<=5;d++)
                {
                    for(e = 1;e<=5;e++)
                    {
                         if((b==2)+(a==3)==1&&(b==2)+(e==4)==1&&(c==1)+(d==2)==1&&(c==5)+(d==3)==1&&(e==4)+(a==1)==1)//每个人的话都有一半是真的,所以每个人的两句话变为条件加起来的结果是1,且5个人的话都要实现
                         {
                             if(a*b*c*d*e==120)//必须满足5个人的名次的乘积为120,否则就出现并列的情况,不符合题目条件
                             {
                                 printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);
                             }
                         }
                    }    
                }
            }
        }
    }
    
    
    
}

3.字符串旋转

//【题目名称】

//字符串左旋

//【题目内容】

//实现一个函数,可以左旋字符串中的k个字符。

//例如:

//ABCD左旋一个字符得到BCDA

//ABCD左旋两个字符得到CDAB

//方法1:暴力解题法
//解题思路:假设字符串为"abcdef",要实现1个左旋,则先把a提出来放到临时变量中,再把剩下的字符往前移动1个位置,最后再把最后一个字符的位置放上a,
//左旋2个,3个则依此类推

/*#include<stdio.h>
#include<string.h>
char* is_left_move(char*str,int k,int sz)
{
    int i = 0;
    char tmp = 0;
    for(i=0;i<k;i++)//k等于几就说明要进行几次移位
    {
        int j = 0;
        tmp = *str;//字符串的首字符,每次移位后都不一样,所以要放在循环外面
        for(j=0;j<sz-1;j++)
        {
            str[j] = str[j+1];//第一个字符取出,其余字符向前移动1位
        }
        j--;//最后一次循环结束时i++,这次++时多余的,如果不减去,则str[j+1]就变成了str[4],越界了
        str[j+1] = tmp;
    }
    
    return str;
}
int main()
{
    char arr[] = "ABCD";
    int k = 0;
    int sz = strlen(arr);
    scanf("%d",&k);//左旋k个字符
    is_left_move(arr,k,sz);//将arr与k传入函数
    printf("%s\n",arr);
    return 0;
}*/

4.【题目名称】

字符串旋转结果

【题目内容】

写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 =AABCD和s2 = BCDAA,返回1

给定s1=abcd和s2=ACBD,返回0.

AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA

AABCD右旋一个字符得到DAABC

//解题思路:利用strncat函数(字符串拼接函数),将arr自身拷贝一份,然后再利用字符串查找函数strstr(找得到就返回子串的首字符地址,找不到就返回NULL)即可
#include<stdio.h>
#include<string.h>
int is_left_move(char*str1,char*str2)
{
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    if(len1!=len2)//先判断两个字符串的长度是否相等,如果不想等,则一定不是子串
    {
        return 0;
    }
    strncat(str1,str1,6);//给arr1后面再加个arr1
    char*cy = strstr(str1,str2);//指针接收strstr返回的地址,若strstr没找到,则返回空指针,则说明不是子串
    if(cy==NULL)
    {
        return 0;
    }
    else
    return 1;
    
    
    
    
    
    
}
int main()
{
    char arr1[] = "ABCDEF";
    char arr2[] = "DEFABC";
    int ret = is_left_move(arr1,arr2);//将两个数组传到函数里面,返回值设置为整数
    if(ret == 1)
    {
        printf("Yes\n");//是子串
    }
    if(ret == 0)
    {
        printf("No\n");//不是子串
    }
}

5.1//题目名称:
//杨氏矩阵
//题目内容:
//有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某i个数字不是矩阵中的数字
//要求:时间复杂度小于o(N)

//时间复杂度小于o(N)
//假设矩阵为:
//1 2 3
//3 4 5
//4 5 6
//想要找到数字6,那么至少得把数组遍历,则需要找9次,此时o(N)就等于9,所以这种算法不满足要求

//解题思路:观察矩阵的右上角数字3,是一行中最大的数,也是一列中最小的数,假设给一个数字k,若3<k,则一行中没有比k更大的数
//则跳到下一行,若3>k,则说明一列中没有比k更小的数,则跳到前一列,左下角的数字也可以以此类推

//1.利用右上角数字的解法
/*#include<Stdio.h>
int find(int arr[3][3],int row,int lin,int k)
{
    int x = 0;//右上角数字的行坐标
    int y = lin-1;//右上角数字的列坐标
    while(x<=2&&y>=0)//行坐标必须<=2(三行),列坐标必须>=0
    {
            if(arr[x][y]<k)
    {
        x++;
    }
    else if(arr[x][y]>k)
    {
        y--;
    }
    else
    {
    return 1;    
    }
    
    }
    return 0;

}
int main()
{
    //int row = 3;
    //int lin = 3;
    int arr[3][3] = {{1,2,3},{3,4,5},{4,5,6}};
    int k = 0;
    scanf("%d",&k);
    int ret = find(arr,3,3,k);
    if(ret==1)
    {
        printf("找到了");
    }
    if(ret == 0 )
    {
        printf("找不到");
    }
    return 0;
}*/

5.2:

//2.利用左下角数字的解法
#include<Stdio.h>
int find(int arr[3][3],int row,int lin,int k)
{
    int x = row-1;//左下角数字的行坐标
    int y = 0;//左下角数字的列坐标
    while(x<=2&&y>=0)//行坐标必须<=2(三行),列坐标必须>=0
    {
            if(arr[x][y]<k)
    {
        y++;
    }
    else if(arr[x][y]>k)
    {
        x--;
    }
    else
    {
    return 1;    
    }
    
    }
    return 0;

}
int main()
{
    int arr[3][3] = {{1,2,3},{3,4,5},{4,5,6}};
    int k = 0;
    scanf("%d",&k);
    int ret = find(arr,3,3,k);
    if(ret==1)
    {
        printf("找到了");
    }
    if(ret == 0 )
    {
        printf("找不到");
    }
    return 0;
}

相关文章:

找凶手,定名次,字符串旋转,杨氏矩阵

1.找凶手问题&#xff1a; //题目名称&#xff1a; //猜凶手 //题目内容&#xff1a; //日本某地发生了一件谋杀案&#xff0c;警察通过排查确定凶手必为4个嫌疑犯的一个。 //以下为4个嫌疑犯的供词&#xff1a; //A说&#xff1a;不是我 //B说&#xff1a;是C //C说&#xff…...

Python 进阶指南(编程轻松进阶):十四、实践项目

原文&#xff1a;http://inventwithpython.com/beyond/chapter14.html 到目前为止&#xff0c;这本书已经教会了你编写可读的 Python 风格代码的技巧。让我们通过查看两个命令行游戏的源代码来实践这些技术&#xff1a;汉诺塔和四人一排。 这些项目很短&#xff0c;并且基于文…...

Redis的五种数据类型及应用场景

Redis是一个开源的key-value数据库。 五种数据类型 String&#xff0c;List&#xff0c; Set&#xff0c;SortedSet&#xff0c;Hash List类型可以存储多个String。 Set类型可以存储不同的String。 SortedSet可以存储String的排序。 Hash可以存储多个key-value对。 String …...

c++List的详细介绍

cList详细使用 write in front 作者&#xff1a; 不进大厂不改名 专栏&#xff1a; c 作者简介&#xff1a;大一学生 希望能向其他大佬和同学学习&#xff01; 本篇博客简介&#xff1a;本文主要讲述了一种新容器list的使用方法&#xff0c;相信你在学了后&#xff0c;能够加深…...

Heap堆的升序排序

在heap堆中&#xff0c;大根堆是一种特殊的堆&#xff0c;它满足下列性质&#xff1a;对于任意一个非叶子节点i&#xff0c;其左右子节点的值均小于等于它本身的值。 在大根堆中&#xff0c;堆顶元素永远是值最大的元素&#xff0c;所以将堆顶元素不断取出来&#xff0c;就相当…...

小程序开发收费价目表

小程序作为一种新兴应用形式&#xff0c;正在逐渐成为企业和个人推广、运营的重要手段。然而&#xff0c;小程序开发的价格因项目规模和复杂程度差异较大&#xff0c;令不少人望而却步。本文将从小程序开发的相关因素入手&#xff0c;探讨小程序开发的价格范围和算法。 一、小…...

Dubbo服务暴露步骤详解

文章目录Dubbo服务暴露步骤详解背景介绍理论知识讲解什么是服务暴露&#xff1f;Dubbo 服务暴露的基本原理操作步骤具体实现环境准备实现服务接口实现服务提供者配置 Dubbo 服务提供者启动服务提供者实现服务消费者配置 Dubbo 服务消费者测试总结Dubbo服务暴露步骤详解 背景介…...

第十四届蓝桥杯编程题部分代码题解

C. 冶炼金属 最大值就是取 a/ba / ba/b 的最小值&#xff0c;最小值就是二分找到满足 mid∗(bi1)≥aimid * (b_i 1) ≥ a_imid∗(bi​1)≥ai​ 的最小值 #include<bits/stdc.h> #define int long long #define x first #define y second using namespace std;void sol…...

统一结果封装异常处理

统一结果封装&异常处理2&#xff0c;统一结果封装2.1 表现层与前端数据传输协议定义2.2 表现层与前端数据传输协议实现2.2.1 环境准备2.2.2 结果封装步骤1:创建Result类步骤2:定义返回码Code类步骤3:修改Controller类的返回值步骤4:启动服务测试3&#xff0c;统一异常处理3…...

数字藏品平台的发展趋势是什么?

1、数字藏品平台具体内容生产模式将在PGC&#xff08;专业生产制造具体内容&#xff09;方式向PUGC&#xff08;技术专业用户生产内容&#xff09;方式变化。 目前&#xff0c;中国热门的数字藏品平台都在PGC模式中持续发展的&#xff0c;而国外流行NFT平台则比较多选用UGC&am…...

Vue3对话框(Dialog)

Vue2对话框&#xff08;Dialog&#xff09; 可自定义设置以下属性&#xff1a; 标题&#xff08;title&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认 提示 内容&#xff08;content&#xff09;&#xff0c;类型&#xff1a;string | slot&#xf…...

【深度强化学习】(5) DDPG 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下深度确定性策略梯度算法 (Deterministic Policy Gradient&#xff0c;DDPG)。并基于 OpenAI 的 gym 环境完成一个小游戏。完整代码在我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Mod…...

unity,Color.Lerp函数

介绍 Color.Lerp函数是Unity引擎中的一个静态函数&#xff0c;用于在两个颜色值之间进行线性插值&#xff0c;从而实现颜色渐变效果 方法 Color.Lerp函数是Unity引擎中的一个静态函数&#xff0c;用于在两个颜色值之间进行线性插值&#xff0c;从而实现颜色渐变效果。该函数的…...

洛谷P8799 [蓝桥杯 2022 国 B] 齿轮 C语言/C++

[蓝桥杯 2022 国 B] 齿轮 题目描述 这天&#xff0c;小明在组装齿轮。 他一共有 nnn 个齿轮&#xff0c;第 iii 个齿轮的半径为 rir_{i}ri​, 他需要把这 nnn 个齿轮按一定顺序从左到右组装起来&#xff0c;这样最左边的齿轮转起来之后&#xff0c;可以传递到最右边的齿轮&a…...

景区在线售票系统功能开发介绍

目前游客线上订票已经普及&#xff0c;景区开通线上购票渠道&#xff0c;方便游客购票&#xff0c;对于还没有开通线上购票的景区来说&#xff0c;需要提前了解一下景区线上售票系统的一些功能&#xff0c;下面给大家详细介绍一下景区在线售票需要哪些功能。 1、在线售票 包含门…...

webService的底层调用方式

webservice中采用协议Http&#xff0c;是指什么意思 WebService使用的是 SOAP (Simple Object Access Protocol)协议 Soap协议只是用来封装消息用的。封装后的消息你可以通过各种已有的协议来传输&#xff0c;比如http,tcp/ip,smtp,等等&#xff0c;你甚至还一次用自定义的协议…...

关于文件的一些小知识下

&#x1f34d;个人主页&#x1f34d;:&#x1f51c;勇敢的小牛儿&#x1f6a9; &#x1f531;推荐专栏&#x1f531;&#xff1a;C语言知识点 ⚠️座右铭⚠️&#xff1a;敢于尝试才有机会 &#x1f412;今日鸡汤&#x1f412;&#xff1a; 你受的苦 吃的亏 担的责 扛的罪 忍的…...

使用Cheat Engine与DnSpy破解Unity游戏

题目连接&#xff1a; https://play.picoctf.org/practice/challenge/361?originalEvent72&page3我们是windows系统&#xff0c;所以点击windows game下载游戏 双击运行pico.exe 屏幕上方的一串英文是叫我们找flag&#xff0c;我在这个小地图里走来走去也没flag&#xff…...

溯源取证-内存取证基础篇

使用工具&#xff1a; volatility_2.6_lin64_standalone 镜像文件&#xff1a; CYBERDEF-567078-20230213-171333.raw 使用环境&#xff1a; kali linux 2022.02 我们只有一个RAW映像文件&#xff0c;如何从该映像文件中提取出我们想要的东西呢&#xff1f; 1.Which volatili…...

Leetcode.100 相同的树

题目链接 Leetcode.100 相同的树 easy 题目描述 给你两棵二叉树的根节点 p和 q&#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

32位寻址与64位寻址

32位寻址与64位寻址 32位寻址是什么&#xff1f; 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元&#xff08;地址&#xff09;&#xff0c;其核心含义与能力如下&#xff1a; 1. 核心定义 地址位宽&#xff1a;CPU或内存控制器用32位…...