摘要:播种,唉,这道题想法一看就有,最长的那条dfs路,不过操作时很是令我难堪,刚开始:我想每各结点至多只走一步,肯定是一条dfs路,可惜,我没法保证结点走的那条路就是最优的那条,半天才看出这错误,后对dfs作一下小的剖析,似乎懂了,原理是记录:最长步数,然后判断。时间有限,打住#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
char s[10][10];
int flag[10][10];
int dir[4][2] = {{1,0},{-1,0},{0
阅读全文
摘要:这个不解释,DFS的经典应用,不过很容易超时最好用文件输出,貌似dev上显示的排列不全#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<time.h> int vis[20];
int A[20];
int n;
void dfs(int cur)
{ if(cur == n+1) { int i; for(i=1;i<=n;i++) { printf("%d",A[i]); ...
阅读全文
摘要:千淘万漉虽辛苦,吹尽狂沙始AC啊,这道题经过慎重的分析之后,思路应该是相当清晰,可写代码时没有注意把定义过的全局变量在主函数中又定义了一次,结果输出总是有误,把主函数中的定义删去,立竿见影,一下AC,我也很是迷茫啊,谁能帮忙解释一下的话万分感激;这也算是我才开始写的DFS,回顾一下我的原理:在标志数组中把相连的油井赋值为1;进行几次DFS赋值就有几块油井,感觉还行吧#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define M 100 in...
阅读全文
摘要:写博客相当与高中时期的一个记录本,它能帮助回顾一些自己认为比较优秀的知识,同时,很喜欢与各位同仁交流,共同进步,呵呵,用学长的话讲叫“for 嗨皮”好了,就这么多吧
阅读全文
摘要:floor函数 floor(x),有时候也写做Floor(x),其功能是“下取整”,或者说“向下舍入”,即取不大于x的最大整数 (与“四舍 五入”不同,下取整是直接去掉小数部分),例如: x=3.14,floor(x)=3 y=9.99999,floor(y)=9 在C语言的库函数中,floor函数的语法如下: #include <math.h> double floor( double arg ); 功能: 函数返回参数不大于arg的最大整数。例如, x = 6.04; y = floor( x ); y的值为6.0. 与floor函数对应的是ceil函数,即...
阅读全文
摘要:潜意识一直认为floor函数的返回值是int型整数,猛然才发现--潜意识是错的有这么一道简单的题:计算球体积时间限制:3000 ms | 内存限制:65535 KB难度:1描述 根据输入的半径值,计算球的体积。输入 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。(0<R<100)输出 输出对应的球的体积,对于每组输入数据,输出一行,计算结果四舍五入为整数Hint:PI=3.1415926 样例输入 11.5样例输出 414WA 代码:#include<stdio.h>#include<math.h>#include<stdlib.h>
阅读全文
摘要:我知道二叉树有先序遍历,中序遍历,后续遍历等等,不过这里说的的是输入一些点(11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ( );对这些点进行构建出对应的二叉数,并对其进行层次遍历。过程为:1. 定义结构体变量(表示有关结点及特征)2. 函数--申请结点3. 函数---增加新结点4. 对数据处理,进入输入过程(建树过程)5. 对数的层次遍历,利用的是宽度优先搜索(队列)#include<stdio.h>#include<stdlib.h>#include<string.h>#in
阅读全文
摘要:描述 兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发。以每分钟Y米的速度去追弟弟,而狗则以每分钟Z米的速度向弟弟跑去,追上弟弟后又立即返回,直到哥哥追上弟弟时,狗跑了多少米?输入 第一行输入一个整数N,表示测试数据的组数(N<100)每组测试数据占一行,是四个正整数,分别为M,X,Y,Z(数据保证X<Y<Z) 输出 输出狗跑的路径,结果保留小数点后两位。 样例输入 15 10 15 20样例输出 200.00好久没见过这种题了,只记得似乎这是初中时用来发散思维的题,呵呵,感觉脑子还不算太老吧,呵呵,因为狗一直在跑着的,所以狗的路程只用它的速率乘以时间即可,
阅读全文
摘要:走方格,这道题毫无疑问是BFS,不过做了好长时间,主要失误在一个if语句上,if语句竟然没加{ },看了半天才改过来思路是这样的,确定方向数组dir[][];然后明确题意需要什么队列里需要放什么;然后就是按照你的原理去写代码。这个题应该算是有一点简单,不过我调了好长时间#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>struct node{ int x,y;}q[400+10];struct node P,N;int dir[4][2]={{1,0},{-1
阅读全文
摘要:/*中午又熬了,做出来了,还值得小高兴一下,呵呵我的第一道宽度优先搜索注意横纵坐标及从'a''1'开始的吧感觉是个好题不过不会c++很吃力啊*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int dir[8][2] = {{2,1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};int flag[8][8];struct node{ int x,y,step;}q[1
阅读全文
摘要:本来以为今天中午这题不会写出来了,不过幸运AC了;先说一下,我知道这题好的方法是用搜索DFS(BFS貌似不爽吧);不过我还不会用DFS,确切说是不敢用没有大胆尝试,DFS,一定要试着写一写;说一下我的原理吧:小杯子往大杯子里pour,只要小杯子能装下,大的一定也能,所以我只让小的pour大的,并且只检验大的杯子里的数是否是目标值(应该迟早能达到目标值,只不过这种做法不是最优解而已);还有,分别用x,y来表示小大杯子里的实际水量很有助于理解哦#include<stdio.h>#include<stdlib.h>#include<string.h>#includ
阅读全文
摘要:找最小生成树的倒数第几长边的问题1,读入数据的处理,最终处理为结构体形式2,快排................................3,并查集找结点,并记录边长大小4,输出所求数据#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>typedef struct Tedge{ int from,to; int dist;}edge;edge dis[500*500]; //记录from点到to点的距离int ans[500+10]; //记录距离in.
阅读全文
摘要:这道题是并查集的题,写过这道题之后,我明白了一点,就是从根上改变所属father域#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int p[30000+100];int a[30000+100];int find(int x){ if(p[x] == x) return x; p[x] = find(p[x]); return p[x];}int main(){ int n,m,k,i,count,temp; while(scanf("%d%d&
阅读全文
摘要:这道题竟然纠结了我好长时间,先是,我尝试了n多变量,WA的很无语当然我知道那是因为我的原理不正确,有的情况没有考虑;后来才用的下边的方法,简单易行,不过数组开得有点小虾仁,这个题使我不敢再小嘘任何题#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<limits.h>#define maxn 1000000int a[maxn+10];int main(){ int t,n,i; scanf("%d",&
阅读全文
摘要:我学识所限,见的东西较少,做这个回文字符串的最少添加问题时绞尽脑汁,加之当天似乎不太舒服那整的是相当头蒙的,一个错误的方法可以使你愈陷愈深,最后请教了一下其他人,得知:只用把字符串逆序,然后求其最大公共子序列,用字符串长度减去LCR值即可,至于为什么,我也不知道为何这样做,只知道这样做是对的,知识匮乏啊#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>char a[1000+10],b[1000+10];int max[1010][1010];int main
阅读全文
摘要:这道题开始看不懂题,英文学得不好,主要是当输入为9999时要输出36位的数,这个数很难保存到一个long long 型的变量中,所以考虑取模公式,还算是一道简单题吧,不过这上午半天就做了这一道题,难受#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int main(){ int m,count; long long n; while(scanf("%d",&m)==1) { n = 1; count = 1; while(n %
阅读全文
摘要:输出最长的配对序列,brackets—括号忘了当时怎么讨论的了,总之用栈来存储序列的对应的标号,标号差值与序列的长度相关,然后从small 到big输出,只知道当时很纠结#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define maxn 100000char target[maxn+10];int stack[maxn+10];int top; //栈顶的元素的下标 void push(int x) //入栈 { s...
阅读全文
摘要:DFS,好像主要是对dfs的递归调用吧,自己也不太懂,总之,它很神奇,多看看代码吧#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int n;int isp[100];int vis[100]; int A[100];int is_prime(int x) //判断一个数是否为素数(该数比较小,不会引起超时) { int i=1,k; for(i=2;i<=(k=(int)sqrt(x));i++) if(x % i == 0)break; if(i&
阅读全文
摘要:从A到F找到最短路即可,由于我不会用prim算法只能用ku...算法,幸好这道题没有让输出路路径,所以用ku...算法也行我通常都是这样写的1.把边存起来2.快排3.并查集呵呵,过了,还行吧,对了输入注意用scanf中的%d前加一个空格#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h> typedef struct Tedge
{ int from,to; int dist;
}edge; edge dis[100];
int N;
int fa[30]
阅读全文
摘要:这个问题据说是dp问题,不过我觉得只用到了一点dp知识,先把矩形排序,宽对应宽长对应长;然后对宽或者长进行排序(二级排序),再找出另一方的最大上升子序列,即可。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h># define maxn 1000int cmp(const void *a,const void *b){ int* c = (int *)a; int* d = (int *)b; if(*c != *d) return *c - *d; retu
阅读全文