做了大半个月,终于把第一章做完了
有的题遇到了不小的坎儿,看着网上一群高中生都做得那么好,心理还是有些小郁闷的。不禁感慨我过去的四年真是虚度啊。总结一下第一章学习到的知识吧。
①闰年判断
int isleapyear(int N)
{
if((N% != && N% ==) || (N% == ))
return ;
else
return ;
}
计算闰年日期时可以用两个数组存放每个月的时间
int Year[] = {, , , , , , , , , , , };
int LeapYear[] = {, , , , , , , , , , , };
②排序
从小到大排序(vector.sort)
bool lessmark(const TIME& s1,const TIME& s2)
{
return s1.start < s2.start;
}
qsort
int cmp(const void *va, const void *vb) //从大到小
{
return (*(int *)va) - (*(int *)vb);
} int cmp2(const void *va, const void *vb) //从小到大
{
return (*(int *)vb) - (*(int *)va);
}
③素数判断
int isprime(int N)
{
int i;
if(N == )
return ;
for(i = ; i * i <= N; i++)
{
if(N % i == )
return ;
}
return ;
}
编程上面,我总是习惯什么都不想直接凭直觉上手编程,遇到理不清楚的地方再停下来。练了些题后发现这样不好,应该在遇到问题时先仔细的分析一下,想好一个解决策略再上手遍,速度会快很多。在写遍历程序时要考虑好遍历的变量是什么,比如倒水问题是所有可能的状态,最长回文是回文的中心点。还有,要考虑怎样边读取数据边处理,我的习惯是先把所有的数据存起来,需要大量的内存。其实很多问题并不需要存储所有数据,取一个分析一个就好,比如namenum、numtri。还有的问题不需要整体考虑,分别在局部考虑即可,如beads.