C/C++每日一练(20230430)

news2024/11/26 11:46:33

目录

1. 分割回文串  🌟🌟

2. 六角填数  ※

3. 查找书籍  🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

出处:

https://edu.csdn.net/practice/26880576

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    bool isPali(string s)
    {
        for (int i = 0; i < s.length() / 2; i++)
            if (s[i] != s[s.length() - i - 1])
                return false;
        return true;
    }
    void dfs(vector<vector<string>> &ans, vector<string> &tmp, int n, string s)
    {
        if (n == s.length())
        {
            ans.push_back(tmp);
            return;
        }
        for (int i = n; i < s.length(); i++)
        {
            if (isPali(s.substr(n, i - n + 1)))
            {
                tmp.push_back(s.substr(n, i - n + 1));
                dfs(ans, tmp, i + 1, s);
                tmp.pop_back();
            }
        }
    }
    vector<vector<string>> partition(string s)
    {
        vector<vector<string>> ans;
        vector<string> tmp;
        dfs(ans, tmp, 0, s);
        return ans;
    }
};

string Vector2dToString(vector<vector<string>> vec2d, string sep = ",")
{
    stringstream ss;
    ss << "[";
    for (int i = 0; i < vec2d.size(); ++i) {
        ss << "[";
        copy(vec2d[i].begin(), vec2d[i].end(), ostream_iterator<string>(ss, sep.c_str()));
		ss.seekp(-(int)sep.size(), ios_base::end);
        ss << "]" << sep;
    }
    ss.seekp(-(int)sep.size(), ios_base::end);
    ss << "]";
    return ss.str();
}

int main()
{
	Solution s;
	string str = "aab";
    cout << Vector2dToString(s.partition(str)) << endl;
    cout << Vector2dToString(s.partition("a")) << endl;
    return 0;
}

输出:

[[a,a,b],[aa,b]]
[[a]]


2. 六角填数

题目描述
如下图所示六角形中,有12个点,依次填入1~12的数字,使得每条直线上的数字之和都相同。其中,已经替你填好了点1,2,3的数字,请你计算其他位置所代表的数字是多少?

输入

输入仅一行,以空格隔开,分别表示已经填好的点1,2,3的数字。

输出

输出仅一行,以空格隔开,分别表示所有位置所代表的数字。

样例输入:

1 8 2

样例输出:

1 8 2 9 7 11 10 12 3 5 6 4

以下程序实现了这一功能,请你填补空白处的内容:

```c++
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
#define eps 10e-10
#define N 15
int a[N];
bool vis[N];
void dfs(int x)
{
    if (x == 1 || x == 2 || x == 3)
    {
        dfs(x + 1);
        return;
    }
    if (x > 12)
    {
        int t[6];
        t[0] = a[1] + a[3] + a[6] + a[8];
        t[1] = a[1] + a[4] + a[7] + a[11];
        t[2] = a[2] + a[3] + a[4] + a[5];
        t[3] = a[2] + a[6] + a[9] + a[12];
        t[4] = a[8] + a[9] + a[10] + a[11];
        t[5] = a[12] + a[10] + a[7] + a[5];
        for (int i = 1; i < 6; ++i)
        {
            if (t[i] != t[i - 1])
                return;
        }
        for (int i = 1; i <= 12; i++)
            cout << a[i] << " ";
        return;
    }
    for (int i = 1; i < 13; ++i)
    {
        ________________;
    }
}
int main()
{
    memset(vis, 0, sizeof(vis));
    cin >> a[1];
    vis[a[1]] = 1;
    cin >> a[2];
    vis[a[2]] = 1;
    cin >> a[3];
    vis[a[3]] = 1;
    dfs(1);
    return 0;
}

```

出处:

https://edu.csdn.net/practice/26880577

代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
#define eps 10e-10
#define N 15
int a[N];
bool vis[N];
void dfs(int x)
{
    if (x == 1 || x == 2 || x == 3)
    {
        dfs(x + 1);
        return;
    }
    if (x > 12)
    {
        int t[6];
        t[0] = a[1] + a[3] + a[6] + a[8];
        t[1] = a[1] + a[4] + a[7] + a[11];
        t[2] = a[2] + a[3] + a[4] + a[5];
        t[3] = a[2] + a[6] + a[9] + a[12];
        t[4] = a[8] + a[9] + a[10] + a[11];
        t[5] = a[12] + a[10] + a[7] + a[5];
        for (int i = 1; i < 6; ++i)
        {
            if (t[i] != t[i - 1])
                return;
        }
        for (int i = 1; i <= 12; i++)
            cout << a[i] << " ";
        return;
    }
    for (int i = 1; i < 13; ++i)
    {
		if (!vis[i])
		{
		    vis[i] = 1;
		    a[x] = i;
		    dfs(x + 1);
		    vis[i] = 0;
		}
    }
}
int main()
{
    memset(vis, 0, sizeof(vis));
    cin >> a[1];
    vis[a[1]] = 1;
    cin >> a[2];
    vis[a[2]] = 1;
    cin >> a[3];
    vis[a[3]] = 1;
    dfs(1);
    return 0;
}

输入输出:

1 8 2↙
1 8 2 9 7 11 10 12 3 5 6 4


3. 查找书籍

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0

输出样例:

25.00, Programming in Delphi
18.50, Programming in VB

出处:

https://edu.csdn.net/practice/26880578

代码:

#include<stdio.h>
struct book
{
    float price;
    char a[30];
};
int main()
{
    int n;
    scanf("%d",&n);
    char a[30];
    int i,k,maxi=0,mini=0;
    book b[10];
    for(i=0;i<n;i++)
    {
        fflush(stdin);
        for(k=0;;k++)
        {
            b[i].a[k]=getchar();
            if(b[i].a[k]=='\n')
            {
                b[i].a[k] = '\0';
                break;
            }
        }
        scanf("%f",&b[i].price);
    }
    for(i=1;i<n;i++)
    {
        if(b[i].price>b[maxi].price)
        {
            maxi=i;
        }
        if(b[i].price<b[mini].price)
        {
            mini=i;
        }
    }
    printf("%.2f,%s\n",b[maxi].price,b[maxi].a);
    printf("%.2f,%s",b[mini].price,b[mini].a);
    return 0;
}

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity 渲染性能分析工具

目标 既然要优化&#xff0c;肯定要有个目标&#xff1a; pc上一般要求&#xff1a;一秒渲染60帧 移动端&#xff1a;一秒渲染30帧 这应该是最低的要求&#xff0c;如果游戏运行时&#xff0c;游戏帧率有变化&#xff0c;人眼能够明显的感觉到帧率下降。 优化的首要规则是找到…

CMake | 01 - CMake快速上手(3.26.3)

专栏介绍 本专栏记录了博主入门CMake的笔记。 源码仓库欢迎Star&#xff1a;https://github.com/Mculover666/cmake_study。 一、CMake概述 1. 什么是CMake CMake官网&#xff1a;https://cmake.org/ CMake is an open-source, cross-platform family of tools designed t…

17.计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

说明书 MATLAB代码&#xff1a;计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 关键词&#xff1a;碳捕集 虚拟电厂 需求响应 优化调度 电转气协同调度 参考文档&#xff1a;《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》完全复现 仿真平台&#xff1a…

【Linux从入门到精通】vim的基本使用各种操作详解

文章目录 一、vim编辑器简单介绍 二、vim编辑器的四种模式 2、1 正常/普通/命令模式(Normal mode) 2、2 插入模式(Insert mode) 2、3 末行模式(last line mode) 三、命令模式的相关操作实例 3、1 光标的相关操作 3、2 文本操作 四、插入模式下的相关操作 五、末行模式下的相关操…

FreeRTOS任务的创建(动态方法和静态方法)

文章目录 前言一、FreeRTOS任务基本概念二、动态创建任务三、静态创建任务四、静态创建任务和动态创建任务的区别五、任务的删除总结 前言 本篇文章将介绍FreeRTOS任务的创建&#xff08;动态方法和静态方法&#xff09;&#xff0c;了解什么是任务和任务的具体创建方法。 一…

文件 IO 操作

文章目录 一 文件1.1 文本模式1.2 二进制模式 二 函数2.1fopen()2.2 getc() 和 putc()2.3 fclose()2.4 fprintf() 和 fscanf()2.5 fgets() 和 fputs()2.6 rewind()2.7 fseek() 和 ftell()2.8 fflush()2.9 fgetpos() 和 fsetpos()2.10 feof() 和 ferror()2.11 ungetc()2.12 setv…

[python][vpython]用vpython实现小球砸弹簧代码

代码&#xff1a; from vpython import * # 加载vpython模块s1 canvas(width1200, height500, backgroundcolor.white, centervector(0, 1, 0)) # 定义画布 L0 1.4 # 定义初始高度 natural_length 0.9 # 设置弹簧原长 base_spring box(posvector(0, 0, 0), sizevector…

solidity 安全 如何阻止重入攻击

什么是可重入攻击&#xff1f; 我们使用合约的过程中&#xff0c;经常会遇到这种情况&#xff0c;智能合约能够调用外部的合约&#xff1b;这些外部合约又可以回调到调用他们的智能合约&#xff1b;在这种情况下&#xff0c;我们说智能合约被重新输入&#xff0c;这种情况被称为…

守护进程Daemon

进程组、对话期和控制终端关系 每个会话有且只有一个前台进程组&#xff0c;但会有0个或者多个后台进程组。产生在控制终端上的输入&#xff08;Input&#xff09;和信号&#xff08;Signal&#xff09;将发送给会话的前台进程组中的所有进程。对于输出&#xff08;Output&…

给大家介绍几个手机冷门但好用的小技巧

技巧一&#xff1a;拍照识别植物 手机的拍照识别植物功能是指在使用手机相机时&#xff0c;可以通过对植物进行拍照&#xff0c;并通过植物识别技术&#xff0c;获取植物的相关信息和资料。其主要优点如下&#xff1a; 方便实用&#xff1a;使用拍照识别植物功能&#xff0c;…

Small Tip: 怎么去Schedule一个Analysis for Office的workbook

workbook的query不能是本地的&#xff0c;也就是说不能是在包$Tmp里面的。这种的没办法在BO里面用SSO。也就没办法Schedule。 前提条件有&#xff1a; 1.BO和BW系统的SSO配置得OK。 如果没有SSO&#xff0c;那么每次打开workbook就会有一个要登录BW的弹窗&#xff0c;这样是…

从零开始学习Linux运维,成为IT领域翘楚(三)

文章目录 &#x1f525;Linux超级用户与伪用户&#x1f525;Linux文件基本属性&#x1f525;Linux权限字与权限操作 &#x1f525;Linux超级用户与伪用户 Linux下用户分为三类&#xff1a;超级用户、普通用户、伪用户 ⭐ 超级用户&#xff1a;用户名为root&#xff0c;具有一切…

初识 OPC

为什么需要OPC&#xff1f; 随着自动化的发展&#xff0c;工厂的自动化程度越来越高&#xff0c;面临着问题&#xff1a; 设备之间&#xff0c;设备与应用程序之间交互数据 不同产商设备/应用程序具有不同接口/通信协议&#xff0c;如何简单快速连接&#xff1f;采集的数据及…

【计算机网络】学习笔记:第四章 网络层【王道考研】更新中....

基于本人观看学习b站王道计算机网络课程所做的笔记&#xff0c;不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系&#xff0c;立删 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;如有疑问欢迎…

计算机组成原理4.2.2汉明码

编码的最小距离 奇校验和偶校验 看1的个数是奇数 还是偶数 汉明码 汉明码的配置 根据不等式&#xff0c;确定增添几位&#xff0c;根据指数放置增添位 汉明码的检错 分不同检测小组 分组规则&#xff1a;哪位为’1‘就是哪组元素。 1号位为‘1’的都是第一组元素&#…

JUnit 5 使用教程 及 JUnit 4/5的差异

1. JUnit 5产生的原因 JDK 8在java中带来了迷人的功能,最值得注意的是lambda表达式 为了适应 Java 8 风格的编码和新的功能特性,JUnit 提供了JUnit 5 2. JUnit 5 架构 与 JUnit 4 相比,JUnit 5 由来自三个不同子项目的几个不同模块组成:JUnit 5 = JUnit Platform + JUni…

controlnet1.1模型和预处理器功能详解(各预处理器出稿对比及对应模型说明)

ControlNet 1.1 与 ControlNet 1.0 具有完全相同的体系结构,ControlNet 1.1 包括所有以前的模型&#xff0c;具有改进的稳健性和结果质量&#xff0c;且增加并细化了多个模型。 命名规范 项目名版本号标识基础模型版本功能名文件后缀名 control 官方总是以control为项目名&…

Java NIO(Java Non-Blocking IO:非阻塞式IO)(2)

1.NIO非阻塞网络编程原理分析 1>.NIO非阻塞网络编程相关的(Selector、SelectionKey、ServerScoketChannel和SocketChannel)关系梳理图: 说明: ①.当客户端连接时,会通过服务器端ServerSocketChannel得到/生成对应的SocketChannel; ②.通过register(Selector sel,int ops)…

SpringBoot 如何防御 CSRF 攻击

SpringBoot 如何防御 CSRF 攻击 CSRF 原理CSRF实践CSRF防御前后端不分离方案前后端分离方案 CSRF 就是跨域请求伪造&#xff0c;英文全称是 Cross Site Request Forgery。 这是一种非常常见的Web攻击方式&#xff0c;其实是很好防御的&#xff0c;但是由于经常被很多开发者忽略…

压缩HTML引用字体

内容简介 有些网站为了凸显某部分字体&#xff0c;而引入自定义字体&#xff0c;但由于自定义字体相对都比较大&#xff08;几M&#xff09;,导致页面加载缓慢&#xff1b;所以本文介绍三种压缩字体的方法&#xff0c;可根据项目情况自行选择。 压缩方法 1、利用Fontmin程序&a…