C/C++每日一练(20230506) 翻转词序、字符金字塔、单词搜索

news2024/9/22 13:27:47

目录

1. 翻转顺序打印  ※

2. 字符金字塔  ※

3. 单词搜索  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 翻转顺序打印

初始化一个字符数组为"The best or nothing",并将其中每个单词的字母顺序翻转后打印输出到屏幕。

要求:
1、字符数组的初始化在程序运行时由用户输入;
2、字符数组的翻转和结果输出功能通过函数实现;
3、字符数组不能定义成全局变量。

出处:

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

代码:

#include <stdio.h>
#include <string>
void trans(char* p,int len)
{
    char* s = new char[len];
    memcpy(s,p,len);
    for (int i = 0; i < len; i++)
    {
        p[i] = s[len-1-i];
    }
    delete[] s;
    s = 0;
}
void transfun(char* p,int len)
{
    int start = 0;
    int i = 0;
    int shift = 0;
    while(i < len)
    {
        for (i = start; i < len;i++)
        {
            if(p[i] == ' ')
                break;
        }
        trans(p+shift,i-start);
        shift += i-start+1;
        start = i+1;
        i +=1;
    }
}
void output(char* p)
{
    printf("%s\n",p);
}
int main()
{
    char buf[1000] = {0};
    printf("请输入字符串:");
    gets(buf);
    transfun(buf,strlen(buf));
    output(buf);
    return 0;
}

输出:


2. 字符金字塔

输入一个正整数n(代表图形的行数),输出如样例形式的图形

输入:5

输出:

        A
       ABA  
      ABCBA  
     ABCDCBA  
    ABCDEDCBA

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

···c++
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int N;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N - i; j++)
            printf(" ");
        ______________________;
        printf("\n");
    }
    return 0;
}
···

出处:

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

代码:

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int N;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N - i; j++)
            printf(" ");
        for (int j = 0; j < i; j++)
            printf("%c", (char)(j + 'A'));
        for (int j = i; j >= 0; j--)
            printf("%c", (char)(j + 'A'));
        printf("\n");
    }
    return 0;
}

输出:

5↙
     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA


3. 单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例 1:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true

示例 2:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

示例 3:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 仅由大小写英文字母组成

进阶:你可以使用搜索剪枝的技术来优化解决方案,使其在 board 更大的情况下可以更快解决问题?

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

```c++
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
static bool dfs(char *word, char **board, bool *used,
                int row, int col, int row_size, int col_size)
{
    if (board[row][col] != *word)
    {
        return false;
    }
    used[row * col_size + col] = true;
    if (*(word + 1) == '\0')
    {
        return true;
    }
    bool result = false;
    if (row > 0 && !used[(row - 1) * col_size + col])
    {
        result = dfs(word + 1, board, used, row - 1, col, row_size, col_size);
    }
    if (!result && row < row_size - 1 && !used[(row + 1) * col_size + col])
    {
        result = dfs(word + 1, board, used, row + 1, col, row_size, col_size);
    }
    if (!result && col > 0 && !used[row * col_size + col - 1])
    {
        result = dfs(word + 1, board, used, row, col - 1, row_size, col_size);
    }
    if (!result && col < col_size - 1 && !used[row * col_size + col + 1])
    {
        __________________________;
    }
    used[row * col_size + col] = false;
    return result;
}
static bool exist(char **board, int boardRowSize, int boardColSize, char *word)
{
    int i, j;
    int len = strlen(word);
    if (len > boardRowSize * boardColSize)
    {
        return false;
    }
    bool *used = malloc(boardRowSize * boardColSize);
    for (i = 0; i < boardRowSize; i++)
    {
        for (j = 0; j < boardColSize; j++)
        {
            memset(used, false, boardRowSize * boardColSize);
            if (dfs(word, board, used, i, j, boardRowSize, boardColSize))
            {
                return true;
            }
        }
    }
    return false;
}
int main(int argc, char **argv)
{
    if (argc < 3)
    {
        fprintf(stderr, "Usage: ./test word row1 row2...\n");
        exit(-1);
    }
    printf("%s\n", exist(argv + 2, argc - 2, strlen(argv[2]), argv[1]) ? "true" : "false");
    return 0;
}
```

出处:

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

代码:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
static bool dfs(char *word, char **board, bool *used, int row, int col, int row_size, int col_size)
{
    if (board[row][col] != *word)
    {
        return false;
    }
    used[row * col_size + col] = true;
    if (*(word + 1) == '\0')
    {
        return true;
    }
    bool result = false;
    if (row > 0 && !used[(row - 1) * col_size + col])
    {
        result = dfs(word + 1, board, used, row - 1, col, row_size, col_size);
    }
    if (!result && row < row_size - 1 && !used[(row + 1) * col_size + col])
    {
        result = dfs(word + 1, board, used, row + 1, col, row_size, col_size);
    }
    if (!result && col > 0 && !used[row * col_size + col - 1])
    {
        result = dfs(word + 1, board, used, row, col - 1, row_size, col_size);
    }
    if (!result && col < col_size - 1 && !used[row * col_size + col + 1])
    {
        result = dfs(word + 1, board, used, row, col + 1, row_size, col_size);
    }
    used[row * col_size + col] = false;
    return result;
}
static bool exist(char **board, int boardRowSize, int boardColSize, char *word)
{
    int i, j;
    int len = strlen(word);
    if (len > boardRowSize * boardColSize)
    {
        return false;
    }
    bool *used = (bool*)malloc(boardRowSize * boardColSize);
    for (i = 0; i < boardRowSize; i++)
    {
        for (j = 0; j < boardColSize; j++)
        {
            memset(used, false, boardRowSize * boardColSize);
            if (dfs(word, board, used, i, j, boardRowSize, boardColSize))
            {
                return true;
            }
        }
    }
    return false;
}
int main()
{
    char *word1 = (char*)"ABCCED";
    char *word2 = (char*)"SEE";
    char *word3 = (char*)"ABCB";
    char *board[] =  {(char*)"ABCE",(char*)"SFCS",(char*)"ADEE"};
    printf("%s\n", exist(board, 3, 4, word1) ? "true" : "false");
    printf("%s\n", exist(board, 3, 4, word2) ? "true" : "false");
    printf("%s\n", exist(board, 3, 4, word3) ? "true" : "false");
}

输出:

true
true
false


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

【Java面试八股文】Java基础篇——String+集合+泛型+IO+异常+反射

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 三、String 3.1.String常量池 3.2.请你说说String类 3.3.new String("abc")创建了几个字符串对象&#xff1f; 3.4…

双线性插值(Bilinear interpolation)原理推导

文章目录 参考资料前言推导先x方向&#xff0c;后y方向先y方向&#xff0c;后x方向 简化后的双线性插值双线性插值的一阶导 参考资料 https://en.wikipedia.org/wiki/Bilinear_interpolation 前言 双线性插值&#xff0c;又称为双线性内插。在数学上&#xff0c;双线性插值是…

chatGPT的对手,Claude注册教程

完美替代chatGPT&#xff01;Claude注册教程及浅浅的测评 注册 slack 访问地址&#xff1a;https://slack.com/ 点击使用电子邮件注册 建议使用Google邮箱进行登录&#xff0c; 当然使用Google邮箱登录需要使用魔法 登录成功后 创建Slack工作区 我的邀请链接 https://join.…

Ae:绘画工具 - 描边选项

在 Ae 中使用绘画工具&#xff08;画笔工具、仿制图章工具及橡皮擦工具&#xff09;时&#xff0c;都会在时间轴面板的绘画 Paint效果中添加“描边选项” Stroke Options&#xff0c;不同的工具有一些不同的属性。 描边选项里的属性主要用于绘画描边之后的调整&#xff0c;并可…

【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】

Leetcode Leetcode -405.数字转换为十六进制数Leetcode - 409.最长回文串 Leetcode -405.数字转换为十六进制数 题目&#xff1a;给定一个整数&#xff0c;编写一个算法将这个数转换为十六进制数。对于负整数&#xff0c;我们通常使用 补码运算 方法。 注意 : 十六进制中所有…

flask+opencv+实时滤镜(原图、黑白、怀旧、素描)

简介&#xff1a;滤镜&#xff0c;主要是用来实现图像的各种特殊效果。图像滤镜用于改变图像的视觉效果&#xff0c;使其具有特定的风格。下面是这三种滤镜的详细说明&#xff1a; 1、黑白&#xff08;Grayscale&#xff09;&#xff1a;黑白滤镜将彩色图像转换为灰度图像&…

全景丨0基础学习VR全景制作,平台篇第17章:热点功能-视频

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01; 功能说明 应用场景 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的交互&#xff0c;增加用户的多元化体验。 视频热点&#xff0c;即点击热点后弹出一个…

Camtasia2023全新版下载安装使用教程

Camtasia2023是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia具有直观的界面和易于使用的工具&#xff0c;包括添加文本、音频、动…

qt程序设置同时只能运行一个,避免重复打开

qt程序设置同时只能运行一个&#xff0c;避免重复打开 [1] qt程序设置同时只能运行一个&#xff0c;避免重复打开[2] Qt 桌面软件防止重新启动一、创建互斥量二、使用QLockFile 创建锁定文件&#xff0c;通过能否锁定来判断是否已经有程序启动。三、使用 系统信号量 QSystemSem…

基于ATECLOUD的航电系统可灵活扩展自动化测试平台

随着电子技术的发展&#xff0c;航电系统在飞机整机中的重要性飞速提升。据统计&#xff0c;近年来航电系统在飞机出厂成本中的比例直线上升&#xff0c;航电系统研发成本已占飞机研制总成本的近30%&#xff0c;并保持着持续扩大的趋势。测试保障作为航电产业链至关重要的一环&…

一起学 WebGL:绘制图片

大家好&#xff0c;我是前端西瓜哥。之前讲解了如何用 WebGL 绘制红色三角形&#xff0c;今天西瓜哥带大家来学习如何将图片绘制到画布上的技术&#xff1a;纹理映射&#xff08;texture mapping&#xff09;。 本文为系列文章中的一篇&#xff0c;请先阅读&#xff1a; 《一起…

25000 字详解 23 种设计模式(多图 + 代码)

25000 字详解 23 种设计模式&#xff08;多图 代码&#xff09; 目录 创建型模式结构型模式行为型模式总结 前言 一直想写一篇介绍设计模式的文章&#xff0c;让读者可以很快看完&#xff0c;而且一看就懂&#xff0c;看懂就会用&#xff0c;同时不会将各个模式搞混。 设计…

记录一次docker容器引起的时间相差8h的问题

一、背景 系统打印日志时间小8h&#xff0c;部分插入mysql的日期却大8h&#xff0c;简直诡异。 测试时间是上午10:05 经过排查&#xff0c;mysql设置的时区&#xff0c;链接url设置的时区都是ok的。而且有其他服务时间正常&#xff0c;故排除MySQL的问题。 二、排查 2.1 查…

AIGPT中文版(无需魔法,直接使用)不愧是生活工作的好帮手。

AIGPT AIGPT是一款非常强大的人工智能技术的语言处理工具软件&#xff0c;它具有 AI绘画 功能、AI写作、写论文、写代码、哲学探讨、创作等功能&#xff0c;可以说是生活和工作中的好帮手。 我们都知道使用ChatGPT是需要账号以及使用魔法的&#xff0c;其中的每一项对我们初学…

09-Vue技术栈(TodoList案例)

目录 1、前期准备2、组件化编码流程3、拆分静态组件3.1 app组件3.2 TodoList组件3.2.1 TodoItem组件 3.3 TodoFooter组件 4、实现动态组件5、实现交互5.1 渲染页面5.2 添加功能5.3 勾选or取消勾选一个todo5.4 删除一个todo5.5 渲染TodoFooter底部内容5.6 全选or取消全选5.7清除…

软考算法-排序篇-下

排序篇 一&#xff1a;故事背景二&#xff1a;冒泡排序2.1 概念2.2 画图表示2.3 代码实现2.4 总结提升 三&#xff1a;快速排序3.1 概念3.2 画图表示3.3 代码实现3.4 总结提升 四&#xff1a;归并排序4.1 概念4.2 画图表示4.3 代码实现4.4 总结提升 五&#xff1a;基数排序5.1 …

第二章——进程与线程(上)

上船不思岸上人&#xff0c;下船不提船上事 文章目录 2.1.1 进程的概念&#xff0c;组成&#xff0c;特征知识总览进程的概念进程的组成——PCB程序是如何运行的进程的组成进程的特征知识回顾 2.1.2 进程的状态与转换&#xff0c;进程的组织知识总览创建态&#xff0c;就绪态运…

《花雕学AI》用Edge和chrome浏览器体验GPT-4智能聊天的神奇免费插件,Sider – 聊天机器人的新选择

你有没有想过和人工智能聊天&#xff1f;你有没有想过用浏览器就能和GPT-4这样的先进的聊天机器人对话&#xff1f;如果你有这样的想法&#xff0c;那么你一定要试试Sider这个神奇的免费插件。 Sider&#xff08;Sider – AI Sidebar&#xff09;是一款基于ChatGPT的智能侧边栏…

零基础小白学5G网络优化技术,最常陷入的怪圈有哪些?

“赛道”这个词是自媒体最喜欢谈的&#xff0c;因为生活里面处处是赛道。从上小学选择哪个中学&#xff0c;高考选择哪个专业&#xff0c;大学毕业选择哪个行业...... 一开始就选对赛道的人&#xff0c;少之又少&#xff0c;都是需要经历和试错才可以。面对行业和工作这个赛道&…

豪取BAT!超详细暑期实习算法面经(非科班无论文)

面试锦囊之面经分享系列&#xff0c;持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本人基本情况&#xff1a;211本硕&#xff0c;本科电子信息工程&#xff0c;硕士通信与信息系统&#xff0c;典型的非科班&#xff0c;无论文&#xff0c;两段实习经历…