51CTO博客开发
一、网络爬虫的定义网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可
二分查找的思想就是:首先找到中间元素,然后再与目标元素进行比较,如果是大于目标值,那么就是在右半部分,否则在左半部分,然后每次都这样,找到中间元素,再进行比较。在SDUT上面做了一个比较基础的二分查找的题目,贴下来吧#include <stdio.h> #include <stdlib.h> int a[100000]; int main() { int n,i,j
这个是个比较简单的题目,是在nyist上面的。然后看了一下别人的代码,感觉思路挺特别的,最近用stl习惯了,已经不习惯去写代码了,不过还是要常常写一下底层代码吧,不然就会对语言越来越不熟悉了。别人的代码:#include <cstdio> #include <cstring> const int N = 10001; char ch[N]; int main() {
题意:天黑后,N个人要过河,只有一个蜡烛且只有一条船,船每次最多坐2个人。不管怎样,过河者(1个人或者2个人)都必须有蜡烛,所以过河后可能需要人返回送蜡烛,然后再继续过河。问怎样过河时间最短。思路:贪心思想(一般都是先排序)关键步骤:每次从此岸到彼岸移动的两个人要么这两个人中有一个是最快的那个人,要么这两个人到达彼岸后再也不回来。即:要么最快+最慢,要么最慢+次慢。1.对N个人过河时间从小到大排序
nyist-91上面的贪心算法一类的,思路比较简单,直接贴一下代码吧!#include <stdio.h> #include <iostream> using namespace std; int a[9]={1,2,6,24,120,720,5040,40320,362880}; //只需要到a9就可以了,因为第十个超过了数的范围。 int main(
看到了这个题目,想到了曾经AC过了的一个hdoj上面的一个题目,2037 今年暑假不AC,一样的思路,先是对开始时间排个序,然后根据结束时间是否大于开始时间进行选择,这就是思路,整个就是利用的贪心算法。贴一下代码吧:#include <stdio.h> #include <string.h> #include <algorithm> using namespac
首先看到这个题目,是个比较简单的题目,但是有些细节没有把握好,老是运行错误,发一下题目的链接吧!http://acm.nyist.net/JudgeOnline/problem.php?pid=6自己编译的没有通过,主要是没有考虑到宽度的问题,然后长度方面也没有考虑细致,当然我也是利用sort排序了的,这个很方便,不用那么受限制,从大到小依次来的。贴一下AC过了代码吧!#include <c
最近看了一下张泽旭的书,然后觉得看得挺困难的,很多都不是很会,慢慢来吧,坚持下去,慢慢学会坚持一件事情,这样可以很大程度上面提高我们的自信,因为我们认为可能做不到的事情,确实做到了。贴一下这次学习的代码吧:%chap2_1; clear; clc; %初始化; w_0 = rand(1); w_1 = rand(1); w_2 = rand(1); MAX_epoch = 4;
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我
这是个求超调量和调节时间的比较简单的程序,但是结果和别人运行出来的结果不一样,有点纠结。不过我觉得我的方法应该是正确的,贴一下代码吧!i=1; ts=zeros(1,100); m=zeros(1,100); ka=zeros(1,100); aa=zeros(1,100); for k=0.5:0.5:10 for a=0.05:0.05:2 num=[k,2*a*k,a
其中遇到了很多问题,贴一下代码吧!/* 中缀表达式转化规则: 从左到右遍历中缀表达式的每个数字和符号, 若是数字就输出,即成为后缀表达式的一部分; 若是符号,则判断其与栈顶符号的优先级, 是右括号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次出栈并输出, 并将当前符号进栈,一直到最终输出后缀表达式为止。 */ #include <iostream>
我在linux g++3.2.2下运行,底层容器不同结果也不同,以deque和vector为底层容器时,栈空时top调用导致段错误。以list为底层容器时top调用返回0。栈top()会调用底层容器的back()操作,deque和vector为空时,back()操作会使用空指针,而list为双向循环链,有一个作为链头的标志块,所以调用back()是不会导致空指针操作。但执行pop()操作时会出错。
在这个题目中,主要注意的是怎么判断输入结束,在用了scanf以后,在windows里面按上ctrl z以后就会结束。贴一下代码吧!#include <stdio.h> int main() { int min,max,n; int count ,sum; scanf("%d",&n); min = n; max = n; coun
在这个题目里面,利用同余定理可以减少很多计算量。不过从书上面的解答中知道了要利用时间函数进行代码调试,现在贴一下代码吧!#include <stdio.h> #include <time.h> /* 利用同余定理求阶层之和 */ int main() { const int MOD = 1000000; int n; int i,j; lon
今天,看了入门经典的书,然后我觉得3n+1的改进那里有点问题,贴一下代码吧!#include <stdio.h> int main() { long n,count = 0; scanf("%d",&n); while(n > 1) { if(n & 1) { n
// The 3n+1 problem (3n+1 问题) // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 // Verdict: Accepted // Submission Date: 2011-05-22 // UVa Run Time: 0.032s // // 版权所有(C)2011,邱秋。meta
数据结构实验之链表二:逆序建立链表题目描述输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据。输入第一行输入整数N;;第二行依次输入N个整数,逆序建立单链表。输出依次输出单链表所存放的数据。示例输入10 11 3 5 27 9 12 43 16 84 22 示例输出22 84 16 43 12 9 27 5 3 11 提示贴一下代码吧:#include
在这个题目中A - Eugeny and ArrayCrawling in process...Crawling failedTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmitStatusDescriptionEugeny has ar
首先看到题目,感觉很简单,就是一个求约数的和的题目,但是这样做就老会TLE,得不到正确的结果,后来看了筛选法了以后,又参考了网上的代码,后来好像还是对筛选法的思想不是很熟悉。贴一下网上的代码吧!#include <stdio.h> int t,n,f[500001]; void Init() { int i,j; for (i=1;i<=250000;i++)
同余的性质这是非常常用的东西(a+b)%n==(a%n+b%n)%n 同加性(a*b)%n==((a%n)*(b%n))%n 同乘性但是,同余不满足同除性!这点在处理涉及到排列组合结果要求余的时候千万要小心!千万不要在做涉及除法运算的大结果式子的时候去边算边求余!(这种一般采用素数高精法处理,不是这里的讨论范围了贴一下代码吧:/* 2035 */ //同余的性质 #incl
这个题目的难点在于如何理解Sample Input里的两个数17和41起初我没理解题目真正的意思,以为每到一层都会停一下,所以第一个输入1 2 我理解成0->1 +6 停一下+5 1->2 +6 ,这样一算刚好是17。但是根据这样的思路再来算3 2 3 1,结果是46了,我在Discuss里面看到也有人跟我一样的想法,怎么算都是46,于是
//纯粹暴力AC,必须记住大数组一定要开成全局变量,因为函数里面的定义的变量都是放在栈堆中,太大会溢出即stack overflow #include<iostream> #include<string.h> using namespace std; int arr[500001]; bool used[3012500]; int main() { int n;
/* pku 1579 */ #include <stdio.h> int s[21][21][21]={0}; int w(int a, int b, int c) { if (a <= 0 || b <= 0 || c <= 0) return 1; else if (a > 20 || b > 20 || c >
C/C++中获取数组的长度
动态分配与静态分配
STL队列
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。char string[15]; gets(string); /*遇到回车认为输入结束*/scanf("%s",string); /*遇到空格认为输入
#include <stdio.h> int main(){ int n, m; while(scanf("%d%d", &n, &m) != EOF){ int countBook[220] = {0}; int nums[220]; for
题目描述现给你一组数,要求你找出其中只出现过一次的那个数。题目保证只有一个数字出现过一次,并且除了只出现一次的那个数字外,其余的数字均出现了偶数次。输入格式输入包含多组测试样例。每组样例第一行为一个正整数n(1<=n<=1000000,并且n为奇数),表示数字的个数。接下来的一行为n个正整数,所有的数都小于2^31。当n=0时,输入结束。输出输出只出现过一次的那个数字,每组结果占一行。
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号