好久没有刷题了,感觉的确手深了,以前觉得杭电的题很不爽,但是现在觉得还行,毕竟锻炼的是严谨,总是在不经意间忽略了一些东西,然后就一直过不了了,哎
写几点注意的东西,以后再添点吧;
-
数学很重要 ,思维方式的锻炼;
-
定义东西的时候最好大一些,不然的话会悲剧 如省赛第E题。
-
定义的变量最好言简意赅,要么是第一个字母 要么是英文简写,增加程序的可读性,方便调试。
-
要对程序数据做出一定的判断,这个也比较重要。
-
不要小看任何一个题目,这回要了你的命,麻痹大意绝对是分数的一大杀手。
今天就写到这里吧,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
就是将a和b二者中较大的一个赋给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);
}
}
Atol与 atoi函数的使用方法 如果后面都为‘/0’转化不正常!!
ACM对数学确实要求比较高。在ACM中,很多题目都涉及到数论、离散数学、几何学、组合数学甚至是微积分的知识。
当然,计算几何是一大类问题,可以暂时不把它放在数学领域讨论,虽然计算几何的题目基本每个区域赛必考。
我认为,你应该首先学习初等数论知识,如素数、同余、中国剩余定理等,这些都是些基础知识;之后,离散数学里面的知识也要有个概念,比如经典的逻辑关系、群的概念等;之后再学习组合数学的知识,特别是排列组合、Polya定理、鸽笼原理等等。这些东西,对于每一个分类,基本上poj上面都有对应的题目可以做,你可以在POJ上面多加练习。必须说的是,ACM是一个要求编程基础非常扎实的比赛,所以,多练习、多思考是必须要有的!
数论的学习,必然是看看初等数论这本书,对于这本经典我就不说啥了。。。
组合数学可以看看卢开澄的那本组合数学,也可以看看吴文虎的那本程序设计中的组合数学。
希望对你有用!预祝取得好成绩!
2072
单词数 检测个数
{
for(j=i+1;j<k;j++)
{
if((strcmp(b[i],b[j])==0))
{
c--;
break;
}
}
}
-------------------------------------------------------------------------------------------------------------
string.h中的memcpy函数
进行数组间的赋值操作
复制a数组中k个元素到b数组
memcpy(b,a,sizeof(type)*k);
全部复制
memcpy(b,a,sizeof(a));
string.h中的memset函数
作用:进行数组初始化
方法:
memset(a,0,sizeof(a));
&& 与 ||是短路运算符号,后面的执行情况要取决与前面!
String.h中strchr函数
找到c字符在s中首次出现的位置,返回的是指针!如果没有这个字符,返回NULL
方法 strchr(c,s);
狗狗40题!
Stdio.h中的函数sprintf
作用:输出格式化数据到字符串;
用法举例
sprintf(s,“%d%d%d%d%d”, abc, de, x, y, z);
但必须要保证写入的字符串要有足够的空间
———————————————————————————————————————
用编译选项-Wall编译程序是,会给出很多警告信息,以帮助程序员查错;
定义一个数组字符窜=0等于将它初始化
———————————————————————————————————————
vim中的shift + v 是进入可视化编程
———————————————————————————————————————
在Vim 中,先用 gg 将光标移到开头,然后 V 切换选取模式,再用 G(大写) 将光标移到文档尾部(即全选),然后按 =,自动排版!
———————————————————————————————————————
定义一个数为INT_MAX时的时候,特别要注意它在以后的过程中能否加,如果能加 ,则不行!
————————————————————————————————————————————
在做模拟题目的时候,一定要把所有的情况都列出来!