![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
字江慕
这个作者很懒,什么都没留下…
展开
-
PAT 1020 月饼 测试点1有个坑
题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200这题对于C++选手来说,用sort函数即可。但是对于C选手来说,如果用qsort函数,在自己写比较函数时,要注意,qsort函数是不稳定的。我们按照单价对结构体元素从大到小排序时,只有大于才交换,否则不交换。#include <stdio.h>#include <stdlib.h>int N;double原创 2020-05-26 17:01:24 · 413 阅读 · 0 评论 -
树状数组练习
给定N个正整数序列,对序列中每个数,求出序列中它左边比它小的数的个数#include <stdio.h>#include <stdlib.h>#define N 6#define lowbit(i) (i&(-i))int C[N];void update(int x,int v);int getsum(int x);int main(void) { int A[N]={0,2,5,1,3,4}; int i; for(i=1;i原创 2020-05-18 15:29:25 · 170 阅读 · 0 评论 -
洛谷 P1562 还是N皇后
传送门:https://www.luogu.com.cn/problem/P1562参考博客:https://blog.csdn.net/qq_40828060/article/details/79364577这题一开始用普通dfs,超时。看大佬用位运算,我也来试试。不同的是,我用0表示不可放置,1表示可放置,那么,在dfs的参数传递时有点麻烦dfs函数中,p中的1,表示该行放置的位置,在进一步dfs时,考虑到对下一行的影响,~p才表示可放置的位置。在同一列的角度,应当是当前列&原创 2020-05-18 15:00:25 · 257 阅读 · 0 评论 -
PAT 1025 PAT Ranking
https://pintia.cn/problem-sets/994805342720868352/problems/994805474338127872该题是一道结构体排序题。将使用C库stdlib.h中的qsort(首地址,长度,元素大小,比较函数)。对于学号的比较,学号可以用字符串保存,字符串可以用string.h中的strcmp()比较(字典序)当分数相同时,按字典序比较学号,分数不同时,从大到小。要注意的是:并列排名,虽然排名一样,但后续排名将受到影响。结构体指针的定义方式原创 2020-05-17 19:56:13 · 154 阅读 · 0 评论 -
洛谷 P1017 进制转换
传送门:https://www.luogu.com.cn/problem/P1017该题考察的较为基础,虽然俺从前没有学过负进制除法,但是自己短除取余,找找规律即可:例如,-15/-2=7······-1,但是,题目说余数不能为负。余数怎么求呢,余数= -15 - (-15/-2),之所以得到负数,是因为-15/-2的绝对值是小于-15的,且为绝对值的最大值。那么,在余数为负数时,我们让商+1即可,即余数= -15 - (-15/2+1)=1代码:#include <stdi原创 2020-05-14 09:17:18 · 168 阅读 · 0 评论 -
C 动态分配与回收
一定要引入头文件#include <stdlib.h>动态分配用到的函数:malloc()。例如:double *ptr=(double *)malloc(30*sizeof(double));即,入口参数为字节的数量,返回值为分配内存的第一个字节的地址。可以通过类型转换赋值给double等类型的指针。释放内存用到的函数:free()。例如:free(ptd);即,入口参数为malloc()之前返回的地址。...原创 2020-05-12 22:53:25 · 196 阅读 · 0 评论 -
PAT B1009 说反话
传送门:https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960此题中,应当记住:(1)scanf("%s",str)中,读入时以空格,回车,tab键作为字符串结束的标志,并在结尾添加'\0'(2)gets(str)中,以回车作为字符串结束的标志,且不会读入回车,并在结尾添加'\0'(3)printf("%s",str)中,字符串末尾不输出回车(4)puts(str)中,字符串末尾自动输出回原创 2020-05-12 21:20:30 · 117 阅读 · 0 评论 -
洛谷 P3262 战争调度
作为一个刷题的萌新来说,这题简直太难了。从网上看了大佬的博客,看了好久(参考博客连接在文末)。这道题结合了深搜和dp。从题目里我还学到了用位移位运算的方便快捷。>> <<从大佬的博客中,我学习到:对于叶子结点来说,当祖先结点的状态确定时,根据贡献值,他参战与否就能确定。那么我们从根结点到叶节点深搜,每向叶节点靠近一层,就确定当前这个结点的状态。当达到叶结点时,根据祖先结点的状态,就能确定他参战或是后勤的总贡献。在回溯时,每回溯一层,求得当前结点为根时,不同叶子参战数的原创 2020-05-10 13:10:43 · 162 阅读 · 0 评论 -
洛谷 P1009 阶乘之和
这题涉及到大整数的乘法加法运算,以下是C语言版本:#include<stdio.h>int sum[2001];int x[2001];int main(void){ int N; int i,j;//计数 int c;//进位 int flag=0;//表示首位前无效的0 scanf("%d",&N); if(N==0){ printf("1\n"...原创 2020-04-21 23:57:09 · 337 阅读 · 1 评论 -
洛谷 P1020 导弹拦截
这道题对时间有限制。普通dp,用二重循环,复杂度O(n²),代码:#include<stdio.h>int h[100000];int dp[100000];int dp2[100000];int max(int a,int b);int main(void){ char ch; int i,j;//计数 int N;//导弹个数 int len1=0,le...原创 2020-04-19 22:22:22 · 169 阅读 · 0 评论 -
C 文件操作学习
文件结尾的方式内嵌字符,如ctrl+z OS存储系统文件大小信息C处理方式getchar()或scanf()在遇到文件结尾时,返回EOF值,在stdio.h中有定义。因此,可以用如下表达式判断文件结尾:while((ch=getchar())!=EOF)如果是对键盘读取,也可以用如上方式,因为C很nice,在结尾时,windows上用ctrl+z键入结尾符即可。文件操作函...原创 2020-04-17 20:52:37 · 142 阅读 · 0 评论 -
洛谷 P1007 独木桥 C语言
思路,把人看成透明的,相遇就穿过去。注意,C语言没有min(),max()函数,需要自己写#include<stdio.h>int min(int a,int b);int max(int a,int b);int main(void){ int L,N; int pos; int i;//计数 int tmin=0,tmax=0; scanf("%d",&a...原创 2020-04-17 17:28:06 · 731 阅读 · 0 评论 -
洛谷 P1002 过河卒 C语言
此题用动规即可解,但坑点在于,数据可能很大,因此4字节int类型会溢出,贴一下第一次通过的代码(丑到哭):#include<stdio.h>int main(void){ int n,m;//B点 int xh,yh;//马的位置 double map[22][22]; int i,ii,j; map[0][0]=1; scanf("%d",&n); sc...原创 2020-04-16 23:57:19 · 2393 阅读 · 2 评论 -
C语言 常用头文件和说明
整理一下常用头文件,毕竟IDE的代码不全功能不是那么顺畅表 常用头文件及说明 头文件 说明 stdio.h 标准输入输出函数等 string.h strlen()函数等 ...原创 2020-04-12 11:05:21 · 277 阅读 · 0 评论 -
C语言 输入输出格式(printf与scanf函数学习)
C语言中,使用scanf()函数获得输入信息。以键盘输入十进制数为例,通常其输入格式为:int a;scanf("%d",&a);注意用&符号,指明变量。下文详述printf()函数。在printf()函数中,通常分为2部分,第一部分为格式format,第二部分为数据。在格式中,要使用占位符%表示数据,这个数据应当在第二部分给出。下面是常用各种类型及占位符表...原创 2020-04-11 21:08:44 · 911 阅读 · 0 评论