c++
LightningJie
这个作者很懒,什么都没留下…
展开
-
点在多边形内判定模板(射线法,凹凸多边形均可)
首先明白 在任意多边形内一点,发射一条射线(以水平为例),必然与奇数条边相交。奇数个交点 ==》 点在多边形内。偶数个交点 ==》 点在多边形外。特例说明,如果要是设定,在线段上也算点在多边形内。那么判断共线且非射线即可。...原创 2022-08-27 20:55:41 · 271 阅读 · 0 评论 -
csp-202206-1:归一化处理题解
输出共 n 行,每行一个浮点数,依次表示按上述方法归一化处理后的数据 f(a1),f(a2),⋯,f(an)。如果你输出的每个浮点数与参考结果相比,均满足绝对误差不大于 10−4,则该测试点满分,否则不得分。全部的测试数据保证 n,|ai|≤1000,其中 |ai| 表示 ai 的绝对值。且输入的 n 个整数 a1,a2,⋯,an 满足:方差 D(a)≥1。第二行包含空格分隔的 n 个整数,依次表示 a1,a2,⋯,an。这里假定需要处理的数据为 n 个整数 a1,a2,⋯,an。类型存储浮点数,并使用。原创 2022-08-21 20:22:28 · 725 阅读 · 0 评论 -
贪心算法(二)区间调度问题,电影节
区间重叠问题:问题描述:给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重叠),问小杰最多可以看多少部电影。贪心解法:将所有的电影按结束时间从小到大排序,第一步选结束的时间最早的那部电影。然后,每步都选和上一步选中的电影不冲突且结束时间最早的电影。输入:先输入n(n<=100),表示n场电影,接下来n行,每行两个整数(均小于1000)表示一场电影的放映区间。输出:对每组数据输出最多能看几部电影。样例输入:121 33 40 73原创 2022-01-17 16:57:42 · 571 阅读 · 0 评论 -
贪心算法(一)假背包问题,圣诞老人的礼物
问题描述:糖果有自己的价值和重量,每箱糖果可以拆分成任意散装组合带走,圣诞老人的驯鹿雪橇最多装下重量为w的糖果,请问圣诞老人最多带走多大价值的的糖果。输入:第一行由两个部分组成,分别为糖果箱数n(1<=n<=100,驯鹿能承受的最大重量正整数w(0<w<10000),两个数用空格隔开。其余n行每行对应一箱糖果,由两部分组成,分别为一箱糖果的价值正整数v,和重量正整数w,中间用空格隔开。输出:输出圣诞诞老人能带走的最大总价值,保留一位小数。样例输入:4 15原创 2022-01-17 10:25:04 · 414 阅读 · 0 评论 -
单链表求交集
(1)笨蛋方法,二重循环,暴力输出。 傻子才用。(2)聪明点的方法 先两个集合排序(升序),然后求交集。这里默认是升序。看代码吧#include<stdio.h>#include<stdlib.h>struct Node{ int a; struct Node *next;};int main(){ Node *p,*q,*heada,*k,*headb,*headc,*m; int i=1; i...原创 2021-09-21 11:11:44 · 449 阅读 · 1 评论 -
数组主元素问题
首先感谢mxw老铁,提出了这个问题。问题描述【问题描述】已知一个整数序列A长度为N其中若存在a且a的个数大于N/2则称为A的主元素例如0 5 5 3 5 7 5 5 则为主元素 5又如0 5 5 3 5 1 5 7则中没有主元素。假设中的个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出的主元素。若存在主元素则输出该元素否则输出【输入形式】一个整数数组【输出形式】主元素【样例输入】0 5 5 3 5 7 5 5【样例输出】5一、思考临界时的情原创 2021-09-20 21:43:24 · 793 阅读 · 0 评论 -
链表的删除结点(各种方法)
先建立链表(代码在最后)一、链表中删除第i个结点int main(){ int i; Node *p,*head,*k; head=setlink(); scanf("%d",&i); int v=1; for(p=head->next;p!=NULL;k=p,p=p->next) { if(v==i)break; else{ v++; } } k->next=p-&g原创 2021-09-15 11:47:14 · 13428 阅读 · 1 评论 -
判断两个搜索树相同
#include<stdio.h>#include<stdlib.h>typedef struct TreeNode * Tree;struct TreeNode{ int v; Tree Left,Right; int flag;};Tree NewNode(int V){ Tree T=(Tree)malloc(sizeof(struct TreeNode)); T->v=V; T->Left=T->Right=NULL; T->.原创 2021-08-30 22:28:34 · 74 阅读 · 0 评论 -
c++:类的静态成员变量初始化方法
class A{public:static int i;}//定义方法int A::i=0;如果帮到你 点个赞吧原创 2021-07-11 16:27:36 · 191 阅读 · 0 评论 -
C++中new 一个对象的时候加括号和不加括号的区别
加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0。对于自定义类型,调用的都是默认构造函数,没区别的。只不过对于内建类型不太一样,加了扩号会做默认值初值化,比如:int*p=newint;//p指向的int值是不确定的;int*q=newint...原创 2021-07-11 16:14:25 · 1777 阅读 · 0 评论 -
c++:如果子类有无参构造函数,基类中也必须有无参构造函数
因为子类用先调用基类构造函数,在调用子类的构造函数,如果没有参数传递,那么在创建子类对象的时候,先调用基类的无参构造函数,再调用子类的无参构造函数。下面有个例子;可以运行一下深化理解:#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;class A{private: int a;public:A(int _原创 2021-07-11 15:42:26 · 831 阅读 · 0 评论 -
容器:list 例子
#include<iostream>#include<algorithm>#include<list>using namespace std;bool cmp(int a,int b){ return a>b;}int main(){ list<int> lst; lst.push_back (9); lst.push_back (7); lst.push_back (8); lst.push_back (6); lst..原创 2021-07-07 18:54:47 · 63 阅读 · 0 评论 -
容器:vector例子1
#include<vector>#include<iostream>using namespace std;int main(){ vector<int> v; v.push_back(1); v.push_back(4); v.push_back(3); v.push_back(4); vector<int>::const_iterator i; for(i=v.begin();i!=v.end();i++) { cout<.原创 2021-07-05 09:48:18 · 100 阅读 · 0 评论 -
算法递归实现阶乘
很简单 直接上代码int Factorial(int n){ if (n==0) { return 1; } return n*Factorial(n-1);}原创 2021-06-29 20:21:38 · 101 阅读 · 0 评论 -
枚举:算法练习题目:特殊的密码锁
001:特殊密码锁描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。输出至少需原创 2021-06-29 00:01:32 · 568 阅读 · 0 评论