<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; liuyueyi</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/liuyueyi/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>动态规划算法</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/11/29/400009261/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/11/29/400009261/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 05:56:18 +0000</pubDate>
		<dc:creator>liuyueyi</dc:creator>
				<category><![CDATA[高校博客大奖赛]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/11/29/400009261/</guid>
		<description><![CDATA[动态规划是运筹学的一个分支，是求解决策过程最优化的数学方法，在解决实际问题中经常被使用。 然而它本身或许不是很好理解，这里做一下本人对它的理解。 动态规划三要素：阶段，状态，决策 1、阶段是对整个过程的自然划分 2、状态表示每个阶段开始时过程所处的自然状况 3、当一个阶段的状态确定后，可以作出各种选择从而演变到下一阶段的某个状态，这种选择手段称为决策 找出此类问题的关键： 1、能够用动态规划来求解（这是基本前提） 利用最优性原理来进行判断（这里不做解释） 2、获得状态转移方程（这是重点） 可以看做动态规划求解实际问题的时候，就是来获得当某阶段的状态和决策为已知，下阶段的状态可以通过该阶段来表示出来，而且它们之间满足一个状态转移方程：X[k+1]=T[k](X[k],U[k](X[k])) 3、根据题目要求对决策过程中产生的中间状态进行选取（如0/1背包问题中要求不超过重量上限的情况下获得最大效益，这里面获得大效益便是一个限制条件，可以用来在中间决策中产生的状态中进行选择 这里总结一下一般思路： 拿到多阶段决策最优化问题后，第一步要判断这个问题是否可以用动态规划解决，如果不能就要考虑搜索或贪心了。当确定问题可以用动态规划后，就要用下面介绍的方法解决问题了： （1）模型匹配法： 最先考虑的就是这个方法了。挖掘问题的本质，如果发现问题是自己熟悉的某个基本的模型，就直接套用，但要小心其中的一些小的变动，现在考题办都是基本模型的变形套用时要小心条件，三思而后行。这些基本模型在先面的分类中将一一介绍。 （2）三要素法 仔细分析问题尝试着确定动态规划的三要素，不同问题的却定方向不同： 先确定阶段的问题：数塔问题，和走路问题 先确定状态的问题：大多数都是先确定状态的。 先确定决策的问题：背包问题 （3）寻找规律、拼凑法： 这个方法很简单，耐心推几组数据后，看他们的规律，总结规律间的共性，这里一般可以比较容易的得到状态转移方程，也就是确定下一阶段与前一阶段之间的联系 （4）边界条件法 找到问题的边界条件，然后考虑边界条件与它的领接状态之间的关系。这个方法也很起效。 （5）放宽约束和增加约束 这个思想是在陈启锋的论文里看到的，具体内容就是给问题增加一些条件或删除一些条件使问题变的清晰。]]></description>
			<content:encoded><![CDATA[<p>动态规划是运筹学的一个分支，是求解决策过程最优化的数学方法，在解决实际问题中经常被使用。<br />
然而它本身或许不是很好理解，这里做一下本人对它的理解。<br />
<strong>动态规划三要素：阶段，状态，决策</strong><br />
       1、阶段是对整个过程的自然划分<br />
     2、状态表示每个阶段开始时过程所处的自然状况<br />
     3、当一个阶段的状态确定后，可以作出各种选择从而演变到下一阶段的某个状态，这种选择手段称为决策<br />
<strong>找出此类问题的关键：</strong><br />
       1、能够用动态规划来求解（这是基本前提）<br />
          利用最优性原理来进行判断（这里不做解释）<br />
     2、获得状态转移方程（这是重点）<br />
          可以看做动态规划求解实际问题的时候，就是来获得当某阶段的状态和决策为已知，下阶段的状态可以通过该阶段来表示出来，而且它们之间满足一个状态转移方程：X[k+1]=T[k](X[k],U[k](X[k]))<br />
        3、根据题目要求对决策过程中产生的中间状态进行选取（如0/1背包问题中要求不超过重量上限的情况下获得最大效益，这里面获得大效益便是一个限制条件，可以用来在中间决策中产生的状态中进行选择</p>
<p><strong>这里总结一下一般思路：</strong><br />
拿到多阶段决策最优化问题后，第一步要判断这个问题是否可以用动态规划解决，如果不能就要考虑搜索或贪心了。当确定问题可以用动态规划后，就要用下面介绍的方法解决问题了：<br />
	（1）模型匹配法：<br />
	最先考虑的就是这个方法了。挖掘问题的本质，如果发现问题是自己熟悉的某个基本的模型，就直接套用，但要小心其中的一些小的变动，现在考题办都是基本模型的变形套用时要小心条件，三思而后行。这些基本模型在先面的分类中将一一介绍。<br />
	（2）三要素法<br />
	仔细分析问题尝试着确定动态规划的三要素，不同问题的却定方向不同：<br />
	先确定阶段的问题：数塔问题，和走路问题<br />
	先确定状态的问题：大多数都是先确定状态的。<br />
	先确定决策的问题：背包问题<br />
	（3）寻找规律、拼凑法：<br />
	这个方法很简单，耐心推几组数据后，看他们的规律，总结规律间的共性，这里一般可以比较容易的得到状态转移方程，也就是确定下一阶段与前一阶段之间的联系<br />
	（4）边界条件法<br />
	找到问题的边界条件，然后考虑边界条件与它的领接状态之间的关系。这个方法也很起效。<br />
	（5）放宽约束和增加约束<br />
	这个思想是在陈启锋的论文里看到的，具体内容就是给问题增加一些条件或删除一些条件使问题变的清晰。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/11/29/400009261/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C 五子棋</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/26/c-12/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/26/c-12/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 03:56:35 +0000</pubDate>
		<dc:creator>liuyueyi</dc:creator>
				<category><![CDATA[图形和视觉计算]]></category>
		<category><![CDATA[开放源代码]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[高校博客大奖赛]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/26/c-12/</guid>
		<description><![CDATA[用C语言写的一个图形菜单的人人对战五子棋的源代码，比较简单，可以看看 #include #include #include #include #include #include #define UP 0x48 #define DOWN 0x50 #define RIGHT 0x4d #define LEFT 0x4b #define ENTER 0x0d void board(void); void chessPieces(int i,int j,int state); void check(int i,int j,int state); void playGame(void); int specialkey(void); void out(int state); void mycircle(void); int gmode,gdriver=DETECT; void main() { char c; registerbgidriver(EGAVGA_driver); initgraph(&#38;gdriver,&#38;gmode,""); do { board(); [...]]]></description>
			<content:encoded><![CDATA[<p>用C语言写的一个图形菜单的人人对战五子棋的源代码，比较简单，可以看看</p>
<p>#include<br />
#include<br />
#include<br />
#include<br />
#include<br />
#include</p>
<p>#define UP 0x48<br />
#define DOWN 0x50<br />
#define RIGHT 0x4d<br />
#define LEFT 0x4b<br />
#define ENTER 0x0d</p>
<p>void board(void);<br />
void chessPieces(int i,int j,int state);<br />
void check(int i,int j,int state);<br />
void playGame(void);<br />
int specialkey(void);<br />
void out(int state);<br />
void mycircle(void);</p>
<p>int gmode,gdriver=DETECT;</p>
<p>void main()<br />
{<br />
char c;<br />
registerbgidriver(EGAVGA_driver);<br />
initgraph(&amp;gdriver,&amp;gmode,"");<br />
do<br />
{<br />
board();<br />
playGame();<br />
c=specialkey();<br />
if(c!='Y'||c!='y'||c!='N'||c!='n') c=specialkey();<br />
}while(c=='Y'||c=='y');<br />
getch();<br />
closegraph();<br />
}</p>
<p>int specialkey(void)<br />
{<br />
int key;<br />
while(bioskey(1)==0);/*waiting */<br />
key = bioskey(0); /*read key*/<br />
key=key&amp;0xff?key&amp;0xff:key&gt;&gt;8; /*只读取特殊键的扫描值，其余为0*/<br />
return(key);/*返回键值*/<br />
}</p>
<p>void board() /*画棋盘函数*/<br />
{<br />
int i=0;<br />
cleardevice();<br />
setbkcolor(WHITE);<br />
setcolor(RED);<br />
for(i=0;i&lt;=20;i++)<br />
line(20,20+20*i,620,20+20*i);<br />
for(i=0;i&lt;=30;i++)<br />
line(20+20*i,20,20+20*i,420);<br />
}</p>
<p>void chessPieces(int i,int j,int state) /*画棋子的三种状态， 1：红子； 2：黑子 ； 0：清除待走棋子的痕迹*/<br />
{<br />
switch (state){<br />
case 0: setcolor(RED);<br />
setfillstyle(SOLID_FILL, WHITE);<br />
bar(21+20*j,21+20*i,39+20*j,39+20*i); break;<br />
case 2: setcolor(DARKGRAY);<br />
setfillstyle(SOLID_FILL,DARKGRAY);<br />
circle(30+20*j,30+20*i,8);<br />
floodfill(30+20*j,30+20*i,DARKGRAY); break;<br />
case 1: setcolor(RED);<br />
setfillstyle(SOLID_FILL,RED);<br />
circle(30+20*j,30+20*i,8);<br />
floodfill(30+20*j,30+20*i,RED);break;<br />
}<br />
}</p>
<p>void playGame()<br />
{<br />
int line[20][30];<br />
int i,j,n1,n2,n3,n4,n5,n6,m1,m2,m3,m4,m5,m6;<br />
int k1,k2,k3,k4;<br />
int t1,t2,t3,t4;<br />
int state=0;<br />
char c;<br />
chessPieces(0,0,state+1);<br />
setcolor(WHITE);<br />
circle(30,30,5);<br />
for(i=0;i&lt;=19;i++)<br />
for(j=0;j&lt;=29;j++)<br />
line[i][j] = 0;<br />
i=0;j=0;<br />
while(1)<br />
{<br />
while((c=specialkey())!=ENTER) /*操纵待走的棋子的移动*/<br />
{<br />
if(c==RIGHT)<br />
{<br />
chessPieces(i,j,0);<br />
chessPieces(i,j,line[i][j]);<br />
if(j0) --j;<br />
else j=29;<br />
chessPieces(i,j,state+1);<br />
setcolor(WHITE);<br />
circle(30+20*j,30+20*i,5);<br />
}</p>
<p>if(c==UP)<br />
{<br />
chessPieces(i,j,0);<br />
chessPieces(i,j,line[i][j]);<br />
if(i&gt;0) --i;<br />
else i=19;<br />
chessPieces(i,j,state+1);<br />
setcolor(WHITE);<br />
circle(30+20*j,30+20*i,5);<br />
}</p>
<p>if(c==DOWN)<br />
{<br />
chessPieces(i,j,0);<br />
chessPieces(i,j,line[i][j]);<br />
if(i=5)||(k2&gt;=5)||(k3&gt;=5)||k4&gt;=5) /*判断是否有五子，是则输出*/<br />
{<br />
out(state);<br />
break;<br />
}<br />
++state;<br />
state=state%2;<br />
}<br />
}<br />
}<br />
}<br />
void out(int state) /*输出赢家*/<br />
{<br />
settextstyle(0,0,4);<br />
setcolor(DARKGRAY);<br />
state?outtextxy(100,300,"BLACK WIN!"):outtextxy(100,300,"RED WIN!");<br />
settextstyle(0,0,2);<br />
setcolor(RED);<br />
outtextxy(30,350,"PRESS 'Y' TO CONTINUE AND 'N' TO EXIT!");<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/26/c-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP平台搭建</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/22/php/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/22/php/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 05:27:46 +0000</pubDate>
		<dc:creator>liuyueyi</dc:creator>
				<category><![CDATA[软件开发工具]]></category>
		<category><![CDATA[高校博客大奖赛]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/22/php/</guid>
		<description><![CDATA[现在网络上有很多的关于php平台搭建的说明，然本人按照上面所述的操作一一进行，最后却仍旧以失败告终。 经过好久的探索，在这里给一个比较细致的教程吧！ 首先需要的工具：apache_2.x-win32-x86-no_ssl.msi, PHP5_installer （官网可以下载） 系统安装过程： 1 安装apache_2.x-win32-x86-no_ssl.msi, 在安装向导界面中的安装路径选 d:\Apache22\ （以下设置都以此为基础） 这个过程比较简单，按照提示进行即可，但注意的是最好选择自定义安装路径；安装成功后任务栏的右下角会有一个图标显示 2 安装PHP5_installer,在执行这一步操作的时候，请先关闭APACHE服务器,方法是邮件任务栏上的图标，选择stop。双击PHP5.x 安装文件 php-5.x-installer，开始进行安装。同样选择自定义选择路径的安装，在选择安装路径（Destination Folder）时，找到 Apache 服务器所在在的文件夹（这里是 d:\Apache22\ )，将 PHP5.x 安装到其下一级文件夹 \cgi-bin 里。最后选择服务器软件类型，勾选Apache，就可以进行安装了。 3、系统文件的配置（关键） I）修改配置文件httpd.conf（位于文件夹 ..\Apache22\conf\ 内 ）： 将 #Listen * 改成 Listen 你自己计算机的IP地址:80 修改后的应该是这样的： Listen XXX.XX.XXX.xx:80（XXX.XX.XXX.xx是你的IP地址,这里主要是进行IP绑定） #Listen 80 再找到 ScriptAlias /cgi-bin/ "d:/Apache22/cgi-bin/" 这一行，在它的下面增加如下几行： AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 Action application/x-httpd-php "/cgi-bin/php-cgi.exe" [...]]]></description>
			<content:encoded><![CDATA[<p>现在网络上有很多的关于php平台搭建的说明，然本人按照上面所述的操作一一进行，最后却仍旧以失败告终。<br />
经过好久的探索，在这里给一个比较细致的教程吧！<br />
首先需要的工具：apache_2.x-win32-x86-no_ssl.msi, PHP5_installer<br />
（官网可以下载）<br />
系统安装过程：<br />
1 安装apache_2.x-win32-x86-no_ssl.msi, 在安装向导界面中的安装路径选 d:\Apache22\ （以下设置都以此为基础）<br />
这个过程比较简单，按照提示进行即可，但注意的是最好选择自定义安装路径；安装成功后任务栏的右下角会有一个图标显示<br />
2 安装PHP5_installer,在执行这一步操作的时候，请先关闭APACHE服务器,方法是邮件任务栏上的图标，选择stop。双击PHP5.x 安装文件 php-5.x-installer，开始进行安装。同样选择自定义选择路径的安装，在选择安装路径（Destination Folder）时，找到 Apache 服务器所在在的文件夹（这里是 d:\Apache22\ )，将 PHP5.x 安装到其下一级文件夹 \cgi-bin 里。最后选择服务器软件类型，勾选Apache，就可以进行安装了。<br />
3、系统文件的配置（关键）<br />
I）修改配置文件httpd.conf（位于文件夹 ..\Apache22\conf\ 内 ）：<br />
将<br />
#Listen *<br />
改成<br />
Listen 你自己计算机的IP地址:80<br />
修改后的应该是这样的：<br />
Listen XXX.XX.XXX.xx:80（XXX.XX.XXX.xx是你的IP地址,这里主要是进行IP绑定）<br />
#Listen 80<br />
再找到<br />
ScriptAlias /cgi-bin/ "d:/Apache22/cgi-bin/"</p>
<p>这一行，在它的下面增加如下几行：</p>
<p>AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php .php3<br />
Action application/x-httpd-php "/cgi-bin/php-cgi.exe"<br />
II） 在C:/WINDOWS/（在系统盘中找，win7是在C:/windows目录下） php.ini 文件，用文字编辑程序如记事本等打开，找到：<br />
extension_dir = ./<br />
这一行，将它改成<br />
extension_dir = d:/Apache22/cgi-bin/ext/</p>
<p>再找到<br />
error_reporting =<br />
这一行，将它改成<br />
error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR<br />
（这里可以不进行修改，这里主要是定义调试时对错误的严格程度，我们的修改是让服务器只报告编译错误和核心错误。）</p>
<p>找到<br />
;extension=php_mbstring.dll<br />
;extension=php_gd2.dll<br />
;extension=php_mysql.dll</p>
<p>这三行，将它们前边的分号去掉，保证以后可以运用 宽字符串、图形库函数 和 MySQL数据库函数。<br />
再在 extension=php_mysql.dll 之后加上一行：<br />
xtension=php_mysqli.dll 保证以后可以按对象的方式操作数据库。<br />
然后保存文件。<br />
4、重新启动Apache服务器，（如果一个dos窗口一闪而过表示apache设置成功）<br />
测试PHP文件，一是看Apache服务器能否处理PHP类型的文件（test.php)，<br />
tesp.php 可以用记事本写一行</p>
<p>保存为test.php即可，然后将此文件复制到D:\Apache22\htdocs下<br />
然后在浏览器输入地址：http://XX.xxx.xx.xx/test.php(XX.xxx.xx.xx为你的IP地址）<br />
当出现一个PHP版本信息的页面就证明安装成功。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/22/php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

