注意

好久没有刷题了,感觉的确手深了,以前觉得杭电的题很不爽,但是现在觉得还行,毕竟锻炼的是严谨,总是在不经意间忽略了一些东西,然后就一直过不了了,哎

写几点注意的东西,以后再添点吧;

  1. 数学很重要 ,思维方式的锻炼;

  2. 定义东西的时候最好大一些,不然的话会悲剧 如省赛第E题。

  3. 定义的变量最好言简意赅,要么是第一个字母 要么是英文简写,增加程序的可读性,方便调试。

  4. 要对程序数据做出一定的判断,这个也比较重要。

  5. 不要小看任何一个题目,这回要了你的命,麻痹大意绝对是分数的一大杀手。

今天就写到这里吧,12 10 14




为什么杭电2041以及后面的娜姐数 会是一个斐波那契数列;

排列组合和递推方面一定要注意 加强锻炼

如果后面的空格或者换行不好控制 ,不如从前面开始;


近期需要学到的东西:dev的编译及其调试,vc++的调试,

然后就是学习指针和结构体,面试题

ubuntu的使用




*p只改变p指向内存的值,而不改变p指向内纯的地址。

p[i]=a[i];

for (i=0;i<5;i++)

{ printf("String %d:",i+1);

gets(p[i]);

}

从上面的语句可以看出,2维字符串也能用gets输入的


 


大牛比较推崇的几个oj

spoj sgu usaco



使用指针的时候 要为其赋予初值 或者开辟空间


EOF的时候

可以人为EOF

方法是按 ctrl+z

字符串是 两次ctrl+z然后回车



C99中允许对结构体中的某一成员初始化 如

Struct student b={.name=”zhang yue ”} 其中 注意. . 的运算级别最高


一行实现最大公约数的代码是

 return (b>0)?gcd(b,a%b):a;


或者 return a%b==0?b:gcd(b,a%b);


条件运算符 ?


表达式为:表达式1?表达式2:表达式3

  先求解表达式1

  若其值为真(非0)则将表达式2的值作为整个表达式的取值,

  否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

  例如:

  max=(a>b)?a:b

就是将ab二者中较大的一个赋给max


如果 A<B

A%B=A



归并排序


#include<stdio.h>

#include<string.h>

int is1[100],is2[100];


void m2(int low,int mid,int high)

{

int i=low,j=mid+1,k=low;


while (i<=mid&&j<=high)

if (is1[i]<=is1[j])

is2[k++]=is1[i++];

else

is2[k++]=is1[j++];

while(i<=mid)

is2[k++]=is1[i++];

while (j<=high)

is2[k++]=is1[j++];

for (i=low;i<=high;i++)

is1[i]=is2[i];

 


}


void m1(int a,int b)

{ int mid;

if (a<b)

{

mid=(a+b)/2;

m1(a,mid);

m1(mid+1,b);

m2(a,mid,b);


}


}

 


Atolatoi函数的使用方法 如果后面都为‘/0’转化不正常!!




ACM对数学确实要求比较高。在ACM中,很多题目都涉及到数论、离散数学、几何学、组合数学甚至是微积分的知识。

当然,计算几何是一大类问题,可以暂时不把它放在数学领域讨论,虽然计算几何的题目基本每个区域赛必考。

我认为,你应该首先学习初等数论知识,如素数、同余、中国剩余定理等,这些都是些基础知识;之后,离散数学里面的知识也要有个概念,比如经典的逻辑关系、群的概念等;之后再学习组合数学的知识,特别是排列组合、Polya定理、鸽笼原理等等。这些东西,对于每一个分类,基本上poj上面都有对应的题目可以做,你可以在POJ上面多加练习。必须说的是,ACM是一个要求编程基础非常扎实的比赛,所以,多练习、多思考是必须要有的!

数论的学习,必然是看看初等数论这本书,对于这本经典我就不说啥了。。。

组合数学可以看看卢开澄的那本组合数学,也可以看看吴文虎的那本程序设计中的组合数学。

希望对你有用!预祝取得好成绩!





2072

单词数 检测个数


for(i=0;i<k-1;i++)

{

for(j=i+1;j<k;j++)

{

if((strcmp(b[i],b[j])==0))

{

c--;

break;

}

}

}

 


-------------------------------------------------------------------------------------------------------------

string.h中的memcpy函数

进行数组间的赋值操作

复制a数组中k个元素到b数组

memcpyb,a,sizeof(type)*k;

全部复制

memcpyb,a,sizeof(a);

string.h中的memset函数

作用:进行数组初始化

方法:

memseta,0,sizeof(a);

&& ||是短路运算符号,后面的执行情况要取决与前面!

String.hstrchr函数

找到c字符在s中首次出现的位置,返回的是指针!如果没有这个字符,返回NULL

方法 strchrcs;

狗狗40题!

Stdio.h中的函数sprintf

作用:输出格式化数据到字符串;

用法举例

sprintf(s,“%d%d%d%d%d”, abc, de, x, y, z);

但必须要保证写入的字符串要有足够的空间

———————————————————————————————————————

用编译选项-Wall编译程序是,会给出很多警告信息,以帮助程序员查错;

定义一个数组字符窜=0等于将它初始化

———————————————————————————————————————

vim中的shift + v 是进入可视化编程

———————————————————————————————————————

Vim 中,先用 gg 将光标移到开头,然后 切换选取模式,再用 G(大写将光标移到文档尾部(即全选),然后按 =,自动排版!

———————————————————————————————————————

定义一个数为INT_MAX时的时候,特别要注意它在以后的过程中能否加,如果能加 ,则不行!

————————————————————————————————————————————

在做模拟题目的时候,一定要把所有的情况都列出来!

没有梦想,何谈远方
原文地址:https://www.cnblogs.com/zyue/p/3114252.html