xia145的专栏

已经两次模拟,有成功有不足,现在我就说说经历两次模拟后的总结和体会。小编我也是一个大一新生,要是有高人看到后不同意小编我的见解,欢迎指教一二。

首先承认不足,最近在c++的实践学习(就是累代码)上时间投入不足,可能有点想一口气吃成胖子,没事就在翻windows程序设计和c++程序设计,光搞理论了,忽略了实践,还是邓小平爷爷说得对,一切事物要从实际出发。还有就是心态了,今天的模拟心态九门就没把握好,光跟电灯搞战斗了,完全失去了竞赛的心态。唉,我还是年轻啊。

但我也有收获,通过这几天看书和模拟,感觉要写出好的程序要有两点重要因素:一是对题目的分析和对算法的推敲;二是如何设计框架。首先是对题目的分析和算法的推敲就不在这里做过多的讨论了,那是需要累计的,而且现在算法还没学(我也是自学)。这次主要是来说说第二点—–建立框架,框架是什么,框架是你程序的雏形,是由伪代码写出的。框架在我看来包括程序框架和数学模型。程序框架是一个空框架,需要你想出哪个函数要完成什么,哪个部分解决什么问题。参见伪代码和向下求精。

我认为重点在于数学模型。数学模型就是通过信息发掘将问题数学化和数字化,提取有用信息。如果现在和我同届的同学说现在的题目还需要数学吗?那我就会答你不用,那数学模型不重要吗?不是的,是因为我们现在是初学者,做的题都简单。但是要去看看ACM试题和游戏编程,要在冗长的题目中找到对自己有帮助的那数学建模就是十分重要的。

举个例子:

Feli的生日礼物

【问题描述】

【要求】

【数据输入】每行一个n,直到输入数据结束

【数据输出】对应输入的n,每行输出一个答案

【样例输入】

1101

【样例输出】

8

乍一看这道题,我们完全可能有被题目吓倒,但我们要是用建立数学模型的方法来分析一下这道题,其实挺简单的。

首先看我标黄的文字,我们会得到两个信息:一、普通思路是解决不了这道题的,因为long int存不下。二、她只要求个位数,也解释说是十位、百位等等不重要(除非个位是零,那我们就除以10,,求出左后一个不为零的数)。那我们就不去管个位之前的数字了。那这道题就很容易了。

代码如下:

#include <iostream>using namespace std;int main(){int number,i,chengji=1;cin>>number;for(i=1; i<=number; i++){chengji=chengji*i;while(chengji%10==0)chengji=chengji/10;chengji=chengji%10;}cout<<chengji<<endl;return 0;}运行结果:

如何提高建立数学模型的能力就是多做题,多思考吧。

这就是我脑中的建立数学模型,希望对亲们有些作用,也希望同学们提出不足,我好改正。

其实每一朵花,都有它自己的生命,

xia145的专栏

相关文章:

你感兴趣的文章:

标签云: