【算法笔记自学】第 3 章 入门篇(1)——入门模拟

3.1简单模拟

自己写的题解

#include <stdio.h>
#include <stdlib.h>
int main() {
    int N;
    int num=0;
    scanf("%d",&N);
    while(N!=1)
    {
        if(N%2==0)
        {
        N=N/2;
        }
        else
        {
        N=(3*N+1)/2;
        }
        num++;
    }
    printf("%d",num);
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

标答

#include <stdio.h>
#include <stdlib.h>
int main() {
    int n,step=0;
    scanf("%d",&n);
    while(n!=1)
    {
        if(n%2==0)n=n/2;
        else n=(3*n+1)/2;
        step++;
    }
    printf("%d\n",step);
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

3.2查找元素

自己写的题解

#include <stdio.h>
#include <stdlib.h>
int main() {
    int n;
    int f=0;
    int a[100000];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);

    }
    scanf("%d",&f);
    int find=-1;
    for(int i=0;i<n;i++)
    {
        if(a[i]==f)
        {
            find=i+1;
        }

    }
    if(find!=-1)
    printf("%d\n",find);
    else
    printf("NO");
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

标答

#include <cstdio>
const int MAXN = 20;
int a[MAXN];
int main() {
    int n, x;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    int position = -1;              // 待查找元素的下标,-1表示找不到
    scanf("%d", &x);
    for (int i = 0; i < n; i++) {   // 遍历序列
        if (a[i] == x) {            // 如果当前元素就是待查找的元素
            position = i + 1;       // 记录下标,注意要加1
            break;                  // 不需要继续查找了,退出循环
        }
    }
    if (position == -1) {           // 如果找不到
        printf("NO");               // 输出NO
    } else {                        // 如果能找到
        printf("%d", position);     // 输出对应的下标
    }
    return 0;
}

3.3图形输出

自己写的题解

#include <stdio.h>
#include <stdlib.h>
int main() {
    int row=0;
    scanf("%d",&row);
    int col=row;
    for(int i=0;i<row-1;i++)
    {
        printf("*");
        for(int j=0;j<i+1;j++)
        {
            if(i==j&&j!=0)
            {
                printf("*");
            }
            else if(j!=0)
            printf(" ");

        }
        printf("\n");
    }
    for(int i=0;i<row;i++)
    {
        printf("*");
    }
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

标答1

#include <cstdio>

int main() {
    int n;
    scanf("%d", &n);
    printf("*\n");
    for (int i = 0; i < n - 2; i++) {
        printf("*");
        for (int j = 1; j <= i; j++) {
            printf(" ");
        }
        printf("*\n");
    }
    for (int i = 0; i < n; i++) {
        printf("*");
    }
    return 0;
}

标答2

#include <cstdio>
#include <cstring>
const int MAXN = 100;
char s[MAXN][MAXN + 1];

int main() {
    int n;
    scanf("%d", &n);
    memset(s, ' ', sizeof(s));
    for (int i = 0; i < n - 1; i++) {
        s[i][0] = s[i][i] = '*';
        s[i][i + 1] = '\0';
        printf("%s\n", s[i]);
    }
    for (int i = 0; i < n; i++) {
        printf("*");
    }
    return 0;
}

3.4日期处理

 

标答

#include <cstdio>

bool isLeapYear(int year) {
    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

int main() {
    int year;
    scanf("%d", &year);
    printf(isLeapYear(year) ? "YES" : "NO");
    return 0;
}

标答

#include <cstdio>
// 每个月的天数
int dayOfMonth[2][13] = {
    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
// 是否是闰年
bool isLeapYear(int year) {
    return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
// 给当前日期加1天(注意参数都用了引用&,这样对参数的修改可以同步到函数外)
void addOneDay(int &year, int &month, int &day) {
    day++;                    // 让day加1
    if (day > dayOfMonth[isLeapYear(year)][month]) {  // 如果超过当前月的天数
        month++;              // 让month加1
        day = 1;              // 重置day为1号
    }
    if (month > 12) {         // 如果月份大于12
        year++;               // 让year加1
        month = 1;            // 重置month为1月
    }
}

int main() {
    int year, month, day, n;
    scanf("%d-%d-%d", &year, &month, &day);       // 按格式输入年月日
    scanf("%d", &n);                              // 输入需要增加的天数
    for (int i = 0; i < n; i++) {                 // 遍历n次,每次加1天
        addOneDay(year, month, day);
    }
    printf("%04d-%02d-%02d", year, month, day);   // 按格式输出年月日
    return 0;
}

3.5进制转换

自己写的题解

#include <stdio.h>
#include <stdlib.h>
int main() {
    int y=0;
    scanf("%d",&y);
    int z[40],num=0;
    do{
        z[num++]=y%2;
        y=y/2;
    }while(y!=0);
   for(int i=num-1;i>=0;i--)
   {
    printf("%d",z[i]);
   }
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

公式:将十进制数y转换为Q进制数z

int z[40],num=0;
    do{
        z[num++]=y%Q;
        y=y/Q;
    }while(y!=0);

自己写的题解

#include <stdio.h>
#include <stdlib.h>
int main() {
    int y=0,product=1;
    int x=0;
    scanf("%d",&x);
    while(x!=0){
        y=y+(x%10)*product;
        x=x/10;
        product=product*2;
    }
    printf("%d",y);
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

公式:将P进制数x转换为十进制数y

int y=0,product=1;
    while(x!=0){
        y=y+(x%10)*product;
        x=x/10;
        product=product*P;
    }

3.6字符串处理

标答

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int maxn=50;
int judge(char str[]){
    int len=strlen(str);
    for(int i=0;i<len/2;i++){
        if(str[i]!=str[len-1-i]){
            return 0;
        }
    }
    return 1;
}
int main() {
    char str[maxn];
    while(scanf("%s",str)!=EOF)
    {
        int flag=judge(str);
        if(flag==1){
            printf("YES\n");
        }else{
            printf("NO\n");
        }
    }
    system("pause"); // 防止运行后自动退出,需头文件stdlib.h
    return 0;
}

标答

#include <cstdio>

const int MAXN = 500;
const int MAXL = 11;
char str[MAXN][MAXL], num = 0;

int main() {
    while (scanf("%s", str[num]) != EOF) {
        num++;
    }
    for (int i = num - 1; i >= 0; i--) {
        printf("%s", str[i]);
        if (i > 0) {
            printf(" ");
        }
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+OSS实现文件上传

创建spring boot项目 pom依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency><dependency><groupId>javax.xml.bind</groupI…

Transformer前置知识:Seq2Seq模型

Seq2Seq model Seq2Seq&#xff08;Sequence to Sequence&#xff09;模型是一类用于将一个序列转换为另一个序列的深度学习模型&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;如机器翻译、文本摘要、对话生成等。Seq2Seq模型由编码器&#…

直播预告|飞思实验室暑期公益培训7月10日正式开启,报名从速!

01 培训背景 很荣幸地向大家宣布&#xff1a;卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训&#xff01;本次培训为线上直播&#xff0c;由中南大学计算机学院特聘副教授&#xff0c;RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人…

数据可视化之智慧农业的窗口与引擎

在科技日新月异的今天,农业作为国民经济的基础产业,正逐步向智能化、数字化转型。农业为主题的数据可视化大屏看板,作为这一转型过程中的重要工具,不仅为农业管理者提供了全面、实时的农田信息,还促进了农业资源的优化配置和农业生产效率的提升。本文将深入探讨农业数据可…

Git 运用小知识

1.Git添加未完善代码的解决方法 1.1 Git只是提交未推送 把未完善的代码提交到本地仓库 只需点击撤销提交&#xff0c;提交的未完善代码会被撤回 代码显示未提交状态 1.2 Git提交并推送 把未完善的代码提交并推送到远程仓库 点击【未完善提交并推送】的结点选择还原提交&#x…

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示&#xff0c;如果您拥有 iPhone&#xff0c;您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大&#xff0c;几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时&#xff0c;如何在没有密码的情况下解锁iPhone&am…

银河麒麟V10 SP1 审计工具 auditd更新

前言 银河麒麟V10 SP1 审计工具 auditd 引发的内存占用过高&#xff0c; 内存使用率一直在 60% 以上&#xff0c; 内存一直不释放 排查 可以使用ps或者top查看系统进程使用情况 ps -aux|sort -k4nr|head -n 5 发现银河麒麟审计工具 auditd 一直占用内存不释放 解决 办法一…

Java视频点播网站

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

基于OpenCv的快速图片颜色交换,轻松实现图片背景更换

图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…

智慧校园-教职工管理系统总体概述

在当今信息化时代&#xff0c;智慧校园教职工管理系统成为了提升教育机构管理效能的重要工具。该系统巧妙融合了先进的信息技术&#xff0c;为教职工的日常管理带来了一场静悄悄的革命。它不仅是一个信息存储库&#xff0c;记录着每位教职工从加入到离开的完整职业轨迹&#xf…

AI 与数据的智能融合丨大模型时代下的存储系统

WOT 全球技术创新大会2024北京站于 6 月 22 日圆满落幕。本届大会以“智启新纪&#xff0c;慧创万物”为主题&#xff0c;邀请到 60 位不同行业的专家&#xff0c;聚焦 AIGC、领导力、研发效能、架构演进、大数据等热门技术话题进行分享。 近年来&#xff0c;数据和人工智能已…

3.pwn 函数调用流程,调用约定

前置准备 pop: Pop指令的作用是弹栈&#xff0c;将栈顶的数据弹出到寄存器&#xff0c;然后栈顶指针向下移动一个单位。 具体来说:如pop rax&#xff0c;作用就是mov rax[rsp];add rsp 8; push: Push指令的作用就是压栈&#xff0c;将栈顶指针向上移动一个单位的距离&#xf…

如何使用uer做多分类任务

如何使用uer做多分类任务 语料集下载 找到这里点击即可 里面是这有json文件的 因此我们对此要做一些处理&#xff0c;将其转为tsv格式 # -*- coding: utf-8 -*- import json import csv import chardet# 检测文件编码 def detect_encoding(file_path):with open(file_path,…

【已解决】“import ... =“ 只能在 TypeScript 文件中使用

现象 在使用 import 语法的时候&#xff0c;代码报红&#xff0c;提示&#xff1a;“import ... “ 只能在 TypeScript 文件中使用 原因 代码被 VSCode 解析成 TypeScript 语法 解决方案&#xff1a; 关闭 JavaScript 的验证启用即可。 mac 快捷方式&#xff1a;comman s…

秋招突击——7/4——复习{}——新作{最长公共子序列、编辑距离、买股票最佳时机、跳跃游戏}

文章目录 引言复习新作1143-最长公共子序列个人实现 参考实现编辑距离个人实现参考实现 贪心——买股票的最佳时机个人实现参考实现 贪心——55-跳跃游戏个人实现参考做法 总结 引言 昨天主要是面试&#xff0c;然后剩下的时间都是用来对面试中不会的东西进行查漏补缺&#xff…

蓝桥杯web组国三选手题纲解析和备赛技巧--经验分享

蓝桥杯web组赛题解析和杯赛技巧 **&#x1f389;&#x1f389;&#x1f389;欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!&#x1f64f;&am…

51单片机嵌入式开发:2、STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…

优雅谈大模型:揭开计算机视觉任务神秘面纱

人工智能在第四次工业革命发挥着至关重要的作用&#xff0c;它广泛的融入日常生活&#xff0c;例如Google助手、Siri、智能手机摄像头、社交媒体过滤器、自动标记、医疗成像、导航等&#xff0c;所有这些技术都切实的改进和增强日常活动的便利性和习惯。 大模型技术发展到现在…

【致知功夫 各随分限】成长需要时间,助人须考虑对方的承受程度

帮助他人需考虑各人的分限所能及的&#xff0c;初学圣学需时间沉淀&#xff0c;存养心性 任何人都应该受到教育&#xff0c;不应受到贫富、贵贱的差异而排除在教育之外&#xff0c;对于不同材质的学生&#xff0c;需要因材施教&#xff1b; 每天都有新的认知&#xff0c;大我…

蓄势高飞逐“新”空,卓翼飞思助力打造低空经济产业领域人才智库

2024年&#xff0c;“低空经济”首次写入政府工作报告&#xff0c;掀开新兴产业的崭新一页&#xff0c;而后迅速在全国各地呈现如火如荼的发展态势。这片蕴藏着巨大潜力和产业的蓝海&#xff0c;正蓄势聚能、乘势而起&#xff0c;站在发展的新风口上&#xff0c;面对新前景和新…