07 2012 档案
hdoj2011--多项式求和
摘要:这道题虽简单但一直出问题。。问题在于。。。两层for循环都用了i做循环变量,但是这两者所代表的意义是不一样的。。所以只要两者的循环变量不一样即可。另外,这道题计算sum时可用递归double f(int n){if (n == 0)return 0;else if (n % 2 == 1)return f(n - 1) + 1.0 / n;elsereturn f(n - 1) - 1.0 / n;}也可用条件语句简写double f(int n){return n ? f(n - 1) + ((n & 1) ? 1.0 : -1.0) / n : 0;}#include<std 阅读全文
posted @ 2012-07-28 20:55 zhtzhl 阅读(192) 评论(0) 推荐(0)
关于输入和输出
摘要:一、输入:1、while (scanf("%d", &n) , n)//表示只有当n=0时输入结束。2、while(m--&&scanf("%d",&n))//表示m为多少值就输入几个n。3、关于gets()输入函数,遇到\n,会把\n当作\0结束。遇到空格则会把空格读入该字符串中。二、输出:1、printf(count++?“ %d”:"%d",i)//表示如果count为0则执行“%d”,否则执行“ %d”。该种情况用于不知道什么时候输出结束,而且对输入格式有要求,即输出的每两个数字之间有空格但最后 阅读全文
posted @ 2012-07-27 20:29 zhtzhl 阅读(231) 评论(0) 推荐(0)
hdoj-2005 第几天
摘要:这道题不难,但是自己用switch,很烦参考码中有个不错的办法 #include <math.h>#include <stdio.h>#define lev(n) ((n % 4 == 0 && n % 100 != 0) ||( n % 400 == 0))//((n % 4 == 0 && n % 100 != 0) ||( n % 400 == 0))的值是1或0.int main(void){ int y, m, d, i, s; int month[2][13] = { {0, 31, 28, 31, 30, 31, 30, 3 阅读全文
posted @ 2012-07-27 19:56 zhtzhl 阅读(132) 评论(0) 推荐(0)
hdoj2000-ascii排序
摘要:这道题很简单,但却值得写一下结题报告。因为:1、当定义了字符后,可直接a>b,否则若用'a'>'b',则说明是a本身这个字符,而不是变量了2、三个比大小,顺序很重要,先是a与b比,然后是a与c比,最后是b与c比。这里的交换如a与b,是指a与b的大小变了,交换了a与b的值。因为a与b是变量,而不是指交换过后a与b的位置也变了,所以输出时是a、b、c的顺序。#include<stdio.h>int main(){char a,b,c,t;while(scanf("%c%c%c",&a,&b,&c)! 阅读全文
posted @ 2012-07-27 18:34 zhtzhl 阅读(341) 评论(0) 推荐(0)
连通图
摘要:#include<vector>#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define Min(a,b) a>b?b:a#define M 10010 //题目中可能的最大点数vector <int> Edge[M]; //图用邻接表表示int STACK[M],top=0; //Tarjan 算法中的栈bool InStack[M]; //检查是否在栈中int DFN[M] 阅读全文
posted @ 2012-07-27 18:25 zhtzhl 阅读(239) 评论(0) 推荐(0)
poj-2386Lake Counting
摘要:这是第一道dfs的题。但是网上找到一个用bfs的方法做的题。那先说说自己用dfs做时卡在空格、回车的输入上,以及在边界问题的处理上。1、边界问题:自己只考虑了左边和上边要加'.',却忽略了右边和下边也要加。另外用scanf和%c的格式输入,导致空格问题很难处理。朋友是用cin》方式输入的,这个不会把空格和回车输入,很实用。2、忽略了题目中的w是大写的,但编程过程中自己写成了小写。那先是自己的代码:#include<iostream>using namespace std;bool vis[102][102];char mat[110][110];void dfs(i 阅读全文
posted @ 2012-07-24 21:06 zhtzhl 阅读(130) 评论(0) 推荐(0)
poj-1458 最长公共序列
摘要:这是自己的第一个关于动态规划问题的求解,在同学的帮助下完成。学到很多。也很感谢他。1、gets()读入字符串时会把空格读入,但不会读回车。但这道题输入时是中间有空格的,如abc esc,所以用gets输入会出错。2、char s[100],改用scanf(“%s”,s)输入,但注意:是从s【0】开始的,但自己刚开始认为如输入abc时是从s【1】开始的,因而后面循环中设置x【i】==y【j】是不对的,结果dp【a】【b】出问题,原因就是如此。所以要改为x【i-1】与y【j-1】比较。此外,计算字符串长度strlen()也要注意。一种写法如之后的程序,还有一种写法是:scanf("%x% 阅读全文
posted @ 2012-07-20 21:41 zhtzhl 阅读(78) 评论(0) 推荐(0)