我的经验

1. 动态规划自顶向下的话不需要返回值, 递归实现。

   自底向上可用for循环实现

2. max, min函数定义在algorithm头文件中,但是Win32头文件windef.h中叶定义了这个, 所以在VC++中用max函数引入algorithm头文件,还是会说没有定义。可以换成

_MAX和_MIN。但是注意提交的时候记得改回max和min, 不然又会说没有定义,zoj中会编译错误.

3. abs用于对整数取绝对值 int abs(int a), fabs用于对浮点数取绝对值 float abs(float a);

4. 细细品味两句话,1.  Output one blank line after each symbol.每个测试例后面输出一个空行

                      2 Between two cases, output a blank line.这个是两个测试例之间一个空行,所以最后一个就不用

                         int font, flage = 0;
                         while(cin>>font && font){
                               if(flage)
                                   cout<<endl;
                              flage = 1;

                         }

5. 注意positive integers正数的意思而已,如果只是说The input consists of several lines, each of which contains three integers a, b and c., 那我们就要当大数处理, 加入没有给出Given three integers a, b and c(|a|, |b|, |c|<10000), 没有说positive, 那么负数的情况你也得想到

6. memset函数        void *memset(void *s,int c,size_tn) 

   含义:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值。

   问题:int a[20], 如果用memset(a,1,20);(实际上与memset(a,1,5*sizeof(int))结果是一样的)

   就是对a指向的内存的20个字节进行赋值,每个都用ASCⅡ为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了

   因为字符数组,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以输出没有问题。

   总结:int,float型数组memset 0或-1可以,其它的不行。char 型可选择各种字符可任意,但是'-9'跟‘9’,memset都是9..所以char数组不要memset为

     负数

memset(a, '-1', sizeof(a));
	for(j = 0; j < 10; j++){
		for(k = 0; k < 10; k++){
			if(a[j][k] == '-1')
				cout<<"R";
			else
				cout<<a[j][k];
		}
		cout<<endl;
	}

这样输出的全部是1,所以不可取。

   例如有一个结构体Some x,可以这样清零:memset(&x,0,sizeof(Some));

           如果是一个结构体数组Some x[10],可以这样:memset(x,0,sizeof(Some)*10);

7.题目中容易看错的divide和divide by。divide是除, divide by除以。Eight divided by two is equal to four八除以二等四。.|| Divide eight by two equals four. || Divide two into eight and you get four. ||Two into eight goes four times.

   http://www.hujiang.com/ciku/divide_by/

 

 

8. 为了达到先找到头结点在向后输出可能会想到stack,但是递归输出的确更加的高明。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值