摘要: 考虑一个连通的平面图,有V个节点,E条边和F个面。(面是一个封闭的区域,图形外部的区域也算作一个面)定理:任意一张连通平面的节点数(V)、边数(E)和面数(F)的关系可以有公式V+F=E+2表示。证明:我们用归纳法的一个变形(双重归纳)来证明这个定理。首先对节点数进行归纳,然后在对面数进行归纳。首先考虑只有一个面的图。这样的图不会含回路;否则,回路至少构成一个面,回路以外构成另一个面。(注:连通无回路的图被称为树。)我们先证明对任意树,V+1=E+2成立。第一个归纳假设:有n个节点的叔有n-1条边。在对面数进行归纳时将上述命题作为归纳基础。主要的归纳假设:有n个免得平面图如果有E条边和V个节点 阅读全文
posted @ 2013-10-20 17:21 清风旋叶 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 平面上n条不同的直线,不一定居一般位置。定理:平面上任意条直线构成的区域可以进使用两种颜色进行着色。证明:使用自然归纳假设。归纳假设:平面上小于n条直线构成的区域可以进使用两种颜色进行着色。当n=1时需要且仅需要用两种颜色进行着色。如果归纳假设成立,那么考虑n条直线时的情况。同样,我们仅需考虑添加了第n条直线后应该如何对原着色方案进行修改。根据区域位于第n条直线的哪一侧,可以把这些区域分成两组,保留一组区域的颜色,反转另组区域的颜色。 阅读全文
posted @ 2013-10-19 13:09 清风旋叶 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 若平面上的直线,任意二线不平行且任意三线不共点,则称这些直线居一般位置。下面计算n条居一般位置的直线能在平面上构成多少个区域。当n=1时,为2;当n=2时,为4;当n=3时,为7......猜测:在平面上n-1条居一般位置的直线添加一条直线后会增加n个区域。证明:我们采用数学归纳法证明的另一种技巧。暂时先把第n条直线移去,此时,根据归纳假设,由于没有第n条直线,因此第(n+1)条直线会增加n个新区域。这样我们只需证明第n条直线的存在使得第(n+1)条直线多增加一个区域。定理:平面上n条居一般位置的直线能把平面分割成n(n+1)/2+1个区域。证明:第n条直线会增加n个区域。第一条直线会构成两个 阅读全文
posted @ 2013-10-19 12:04 清风旋叶 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 1:前n个数的和为n(n+1)/2。2:级数8+13+18+23+...+(3+5n)的和为2.5(n^2)+5.5n。3:若n是自然数,且1+x>0,则(1+x)^n>=1+nx。其证明过程是一样的,归纳基础都是当n=1时,由n推出n+1时成立。 阅读全文
posted @ 2013-10-19 11:17 清风旋叶 阅读(192) 评论(0) 推荐(0) 编辑
摘要: #includeint main(){ int a,b; while(scanf("%x%x",&a,&b)!=EOF) { printf("%d\n",a+b); } return 0;} 阅读全文
posted @ 2013-10-14 19:11 清风旋叶 阅读(304) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeint arr[100050];int brr[100050];int crr[100050];int c,n;int main(){ while(scanf("%d %d",&c,&n)!=EOF&&c+n) { memset(crr,0,sizeof(crr)); memset(arr,0,sizeof(arr)); for(int i=1;i<=n;i++) { scanf("%d",&arr[i]); } brr[1]=arr[1]; crr[brr[1 阅读全文
posted @ 2013-10-14 18:35 清风旋叶 阅读(147) 评论(0) 推荐(0) 编辑
摘要: #includeint main(){ int n=2,m=3; printf("%d\n",n<<m); return 0;}运行结果是:16 2*(2^3)m表示左移的位数,每移动一位,相当于乘以2。结果等于n*(2^m)。补充:n&1,可以判断n的奇偶性。 阅读全文
posted @ 2013-07-29 10:51 清风旋叶 阅读(436) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeint main(){int n;scanf("%d",&n);int a[80],b[80],c[80],d[80];char str[200];while(n--){memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(d,0,sizeof(d));memset(str,0,sizeof(str));scanf("%s",str);int i,j,t1=0,t2=0,t3=0,t4=0;for(j=0;j 阅读全文
posted @ 2013-07-27 11:01 清风旋叶 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 你有一块椭圆的土地,你可以在边界上选n个点,并两两链接得到n*(n-1)/2条线段。它们最多能把土地分为多少个部分?样例输入:4样例输出:8分析:欧拉公式:V-E+F=2。V是顶点数,F是面数(即土地块数加上最外面那个面),E是边数。只要求出V,E,答案就是E-V+1。不管是顶点还是边,计算时都要枚举一条从固定点出发(所以,最后要乘以n)的所有对角线。假设该对角线的左边有i个点,右边有n-2-i个点,则左右两边的点两两搭配后在对角线上形成了i*(n-2-i)个交点,得到了i*(n-2-i)+1个线段。注意,每个交点被重复计算了4次,每个线段被重复计算了2次。因为一个交点有两个线段相交而成,共有 阅读全文
posted @ 2013-07-27 10:58 清风旋叶 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1.设变量x为float型且已赋值,则下列语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是 x=(int)(x*100+0.5)/100.0 例题,Financial Management(通师邀请赛正式赛第一题) 代码:#include#include#includeusing namespace std;#define n 12int main(){ float a[n]; float sum=0,ans=0,aver=0; memset(a,0,sizeof(a));for(int i=0;i。4.开灯问题 代码:#include#includeint a[1020];in 阅读全文
posted @ 2013-07-27 10:40 清风旋叶 阅读(230) 评论(0) 推荐(0) 编辑