1、模拟题的常见题型:
(1)打表,列出所有可能(数据较少,规律明显)
(2)分阶段求解,自顶向下,先写出主程序,然后输入输出,判断条件这些直接用函数实现,简化步骤。
(3)模拟操作,有两种思路,一是直接模拟,得出结果;二是先记录所有操作,然后模拟每个操作。
(4)日期天数,可以逐年,逐月,逐日的相加,然后求星期之类的元素。
(5)图形模拟,行,列,对角线,找规律。
(6)利用数据结构(例如:栈,队列,链表,树状数组)实现,考虑数据结果的特点。
总原则:找特征,简化步骤。
小技巧:
(1)一队人环形排序,可以用取余来模拟循环。
int Walk(int pos,int dt,int len) //dt表示步长,len表示要走的长度
{
while(len--){
do{
pos=(pos+dt+n-1)%n+1;
}while(a[pos]==0); //do-while循环可以跳过已经出队的人员。
}
return pos;
}
(2)字符串的单词个数不多的时候可以分情况读取。
(3)记录图中某个节点(i,j)的值可以用i*maxn+j的形式表示,
然后取这个位置的时候在i=x/maxn , j=x%maxn,就可以了。
(4)调试时可以输出结果来判断结果。
(5)有负数存在时尽量不用字符串输入,输入数字,减少字符串的运算。
注意点:
(1)输入时:如果int类型和char字符串之间有换行,要用getchar()去除那个换行,不然会报错。
(2)定义变量时不要使用已有的库函数函数或者变量。