当前位置: 首页 > 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…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

Linux操作系统共享Windows操作系统的文件

目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项&#xff0c;设置文件夹共享为总是启用&#xff0c;点击添加&#xff0c;可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download&#xff08;这是我共享的文件夹&#xff09;&…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

PostgreSQL 与 SQL 基础:为 Fast API 打下数据基础

在构建任何动态、数据驱动的Web API时&#xff0c;一个稳定高效的数据存储方案是不可或缺的。对于使用Python FastAPI的开发者来说&#xff0c;深入理解关系型数据库的工作原理、掌握SQL这门与数据库“对话”的语言&#xff0c;以及学会如何在Python中操作数据库&#xff0c;是…...

MyBatis-Plus 常用条件构造方法

1.常用条件方法 方法 说明eq等于 ne不等于 <>gt大于 >ge大于等于 >lt小于 <le小于等于 <betweenBETWEEN 值1 AND 值2notBetweenNOT BETWEEN 值1 AND 值2likeLIKE %值%notLikeNOT LIKE %值%likeLeftLIKE %值likeRightLIKE 值%isNull字段 IS NULLisNotNull字段…...