ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《跟英雄哥学算法第二天》

2022-01-02 21:00:47  阅读:202  来源: 互联网

标签:return pt int void 哥学 ++ 算法 英雄 100



今天做一下总结,感觉现在我做啥题都很吃力,自己一个题想很久都么思路,有了思路还是实现不了,但是看了别人的代码自己懂了之后能实现出来,我是接收知识比较慢的那种人,不能抱怨,只能低下头继续写代码,这时候沉住气,千万别和人家的厉害的比,自己做好自己的,别比进度,加油啊,相信自己。


《算法零基础100讲》(第6讲) 日期算法_英雄哪里出来-CSDN博客

力扣:1154. 一年中的第几天 - 力扣(LeetCode) (leetcode-cn.com)

先说一下这个题的解题思路:
题目条件是给你年/月/日,让你算一下这一天是这一年的第几天,我们肯定会想到把这个月的前几个月(也就是1月到本月的前一个月(不包括本月))加上,在加上天数就是我们所要求解的,但是尤其不要忘记还要判断这一年是闰年还是平年,它们的2月份天数不一样,闰年是29天,平年是28天。这样的思路就差不多了,还有一点就是由于力扣本身给我们的接口,输入的年月份是字符串,所以我们就要把字符串里的年月日转化成数字。

//判断闰年or平年//(1)
bool is_leap_year(int year){
    if(year %4 ==0 && year % 100 !=0 || year % 400==0)
    {
        return true;
    }
    return false;
}
//提取字符串中的年月日//(2)
int StroInt(char*str,int len){
     int i = 0;
     int sum=0;
     for(i=0;i<len;i++){
      sum=sum*10+(str[i]-'0');
     }
     return sum;
}
int dayOfYear(char * date){
    int mounthday[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//(3)
    int i;
     int sumday[13];
    int year,day,mounth;
    year=StroInt(date+0,4);//(4)
    mounth=StroInt(date+5,2);//(5)
    day=StroInt(date+8,2);(6)
    sumday[0]=0;//(7)
    mounthday[2]= is_leap_year(year) ? 29 : 28;//(8)
    for(i=1;i<mounth;i++){//(9)
        sumday[i]=sumday[i-1]+mounthday[i];
    }
     return sumday[mounth-1]+day;//(10)
}

(1):判断闰年还是平年

 所以就是能被4整除并且不能被100整除或者能被400整除的数字;

(2):利用ASCII码值进行将字符串转化成数字,当然也可以用atoi函数

(3):创建一个数组表示每个月有多少天,其中第一个设置为0天是为了防止在后面累加天数的时候溢出;

(4):提取年份(也就是从第一个到第四个)

(5):提取月份(也就是从第5个到第7个(这里也就是从第五个开始往后两个))

(6):提取年份(也就是从第8个到第10个 (这里也就是从第8个开始往后两个))

(7):这时累加天数将下标为0时初始化为0与上面创建数组相照应。

(8):2月份如果是闰年就为29天否则平年28天。

(9):从一月开始一直到本月的前一月进行累加天数

(10):将本月的前一月累加的天数再加上本月的第几天最后就是答案了。


【第52题】qsort 结构体 应用 | 对二维空间中的点进行排序_英雄哪里出来-CSDN博客

#include<stdio.h>
#include<stdlib.h>
//定义一个结构体
struct Point
{
	int x, y;//x坐标 y坐标
}pt[10001];

int  cmp(const struct Point* pa, const struct Point* pb)
{
	if (pa->x == pb->x){
		return pa->y - pb->y;
	}
	return pa->x - pb->x;
}
 
void input(int n)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d %d", &pt[i].x, &pt[i].y);
	}
}
void output(int n)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		printf("%d %d\n", pt[i].x, pt[i].y);
	}
}
int main()
{
	int n;
	while (scanf("%d", &n) != EOF) {
		//输入函数
		input(n);
		//qsort函数实现
		qsort(&pt, n, sizeof(pt[0]), cmp);
		//输出函数
		output(n);
	}
	
	return 0;
}

上一题进阶排序结构体字符串

typedef struct student
{
	char name[20];

}Stu;

int cmp(const void* pa, const void* pb)
{
	return strcmp(((Stu*)pa)->name, ((Stu*)pb)->name);
}

void print(Stu s[],int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++) {
		printf("%s ", s[i].name);
	}
}

int main()
{
	Stu s[3] = { {"wangermazi"},{ "zhaolaowu"},{"gulaosan"} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp);
	print(s,sz);
	return 0;
}

【第53题】二维数组的应用 | 求二维数组每一行的最大值_英雄哪里出来-CSDN博客_c语言求二维数组每行最大值

#define maxn 110
int a[maxn][maxn];
#include<stdio.h>

void input(int m, int n, int a[][maxn])
{
	int i, j;
	for (i = 0; i < m; ++i) {
		for (j = 0; j < n; ++j) {
			scanf("%d", &a[i][j]);
		}
	}
}

void output(int m, int n, int a[][maxn])
{
	int i, j;
	for (i = 0; i < m; ++i) {
		for (j = 0; j < n; ++j) {
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	
}

renew_a(int m, int n, int a[maxn][maxn])
{
	int i, j,max;
	for (i = 0; i < m; ++i) {
		 max = a[i][0];
		for (j = 1; j < n; ++j) {
			if (a[i][j] > max) {
				max = a[i][j];
			}
		}
		a[i][0] = max;
	}
}

int main()
{
	int n = 0;
	int m = 0;
	while (scanf("%d %d", &m, &n) != EOF) {
		//输入函数
		input(m, n,a);
		//排序
		renew_a(m,n,a);
		//输出函数
		output(m, n, a);

	}
	return 0;
}

这个题主要是renew_a这个函数;

先把二维数组的每一行的第一个元素当做这一行中最大的元素,然后依次枚举这一行的所有元素找到最大的那个元素,跳出for循环将其放在第一个。

标签:return,pt,int,void,哥学,++,算法,英雄,100
来源: https://blog.csdn.net/m0_61210742/article/details/122277936

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有