﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++ linux gdb c</title><link>http://www.cppblog.com/shandongluzi/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:42:00 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:42:00 GMT</pubDate><ttl>60</ttl><item><title>C时间函数大全（转载）</title><link>http://www.cppblog.com/shandongluzi/archive/2010/08/20/124111.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Fri, 20 Aug 2010 09:18:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2010/08/20/124111.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/124111.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2010/08/20/124111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/124111.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/124111.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/shandongluzi/archive/2010/08/20/124111.html'>阅读全文</a><img src ="http://www.cppblog.com/shandongluzi/aggbug/124111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2010-08-20 17:18 <a href="http://www.cppblog.com/shandongluzi/archive/2010/08/20/124111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Winxp下对wireshark-0.99.7编译</title><link>http://www.cppblog.com/shandongluzi/archive/2010/03/09/109302.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Tue, 09 Mar 2010 09:24:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2010/03/09/109302.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/109302.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2010/03/09/109302.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/109302.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/109302.html</trackback:ping><description><![CDATA[Winxp下对wireshark-0.99.7编译



由于网络速度极不稳定, 用到的所有文件和工具都是手工下载的(Cygwin, 
    wireshark编译所需库等), 有宽带上网条件的朋友可以参考官方的Developer Guide文档进行. 

1. 安装C编译器
  开发文档说可以使用多个C编译器,包括Visual Studio 6.0, Visual Studio .NET, Visual 
  Studio 2003, Visual Studio 2005等中的C编译器, 以及Visual C++ 2005 Express Edition
  等等. 而wireshark 0.99.7的关于对话框显示 
    "Built using Microsoft Visual C++ 6.0 build 8804"
  可见官方是用Visual C++ 6.0编译的,所以我也选择用VC6.0编译.需要注意的是它用的VC6.0
  版本为8804, 而我用的是8168, 也正常编译了.
  
  安装好VC6.0之后,请打开"你的VC安装目录/Common/MSDev98/Bin/"目录, 将其中的VCVARS32.BAT
  文件拷贝到一个方便的地方, 如C盘根目录下, 并改一下好输入的名字,如"v.bat"这是为了
  以后用cmd.exe时方便. 以下几步默认会用此设置.
  
2. 安装Cygwin.
  Cygwin简介: "Cygwin是一个在windows平台上运行的unix模拟环境，是cygnus solutions公司
  开发的自由软件（该公司开发了很多好东西，著名的还有eCos，不过现已被Redhat收购）。
  它对于学习unix/linux操作环境，或者从unix到windows的应用程序移植，或者进行某些特殊
  的开发工作，尤其是使用gnu工具集在windows上进行嵌入式系统开发，非常有用。"
  
  到 http://coolersky.com/download. 在里面找 Cygwin 2.510.2.2本地安装包 并下载.
  注意: 此ISO文件有668MB.
  下载完成后, 用虚拟光驱工具载入镜像, 运行setup.exe, 并选择安装以下几个编译Wireshark
  所必需, 但默认又不安装的包 (分类/具体的包):
    • Archive / unzip
    • Devel / bison
    • Devel / flex
    • Interpreters / perl
    • Utils / patch
    • Web / wget
    选择方法: 展开后点击skip,使其变为版本号即可.
    请注意, 安装到默认的C:\cygwin目录.
  
3. 安装Python 2.4
  到 http://python.org/download/ 下载并安装用于Win32的Python 2.4版本. 开发文档好象说
  2.5版本有些问题什么的, 用2.4保险.
  注意: 请安装到默认的 C:\Python24 目录.
  
4. 准备源代码并修改config.nmake文件
  到wireshark官方网站下载wireshark源代码文件压缩包wireshark-0.99.7.tar.gz, 将其解压到
  C:\wireshark.
  
  在C:\wireshark目录中找到config.nmake文件, 用Ultra Edit或者写字板打开, 你可能需要
  修改以下设置:
    找到VERSION_EXTRA, 加入自定义版本号, 如"-myversion".
    找到WIRESHARK_LIBS, 设置编译wireshark所需的库所在的目录, 默认即可.
    找到PROGRAM_FILES, 设置本机程序安装目录, 默认即可.
    找到MSVC_VARIANT, 只将值为MSVC6的那一行前的#去掉, 其余MSVC_VARIANT项行首全部加上#注释掉.
    找到GTK1_DIR, GTK2_DIR, 如果只想生成好看的GTK2 GUI的程序, 用#注释掉GTK1_DIR行.
    找到CYGWIN_PATH, 将其设置为Cygwin的bin目录.
    找到PYTHON及其后的PATH, 将其修改为本机python.exe和其安装目录的位置.
    找到MAKENSIS, 如果你没有安装NSIS安装程序制作工具, 用#注释掉此行.
    找到HHC_DIR, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行.
    找到INSTALL1_DIR, 如果不想生成GTK1程序, 用#注释掉此行.
    找到HHC_EXE, 如果没有安装HTML Help Workshop(chm帮助文件制作工具), 注释掉此行.
    
  修改完毕后, 保存修改后的config.nmake并将一份副本保存于安全的地方, 以备用. 
  
5. 准备编译所需的库
  到 http://anonsvn.wireshark.org/wireshark-win32-libs/trunk/packages/ 下载在Win32下
  编译wireshark所需要的所部库. 当然有条件的可以按昭开发文档说的自动下载这些库了.
  把这些库保存到 C:\wireshark-win32-libs 目录.
  
  注意: 
  (1) 下载后的zip文件有些在文件夹中,如gtk, gtk-wimp, 要把这些文件夹中的文件
      全部移到C:\wireshark-win32-libs根目录下.
  (2) 下载后的zip文件保持原样放在C:\wireshark-win32-libs目录下即可, 
      不要解压缩!!!
  (3) 下载的库有的可能会和编译特定版本wireshark需要的相应库的版本不一致, 如
      编译0.99.7版本需要gib-2.14.3,而我从
      http://anonsvn.wireshark.org/wireshark-win32-libs/trunk/packages/
      下载的版本为glib-2.14.4, 此时需要重新下载所要求的版本2.14.3, 简单地把
      glib-2.14.4.zip改名为glib-2.14.3是不行的, 虽然编译可以通过, 但生成的
      wireshark.exe在运行时会报错, 无法运行!!!
  (4) 当在后面的安装编译支持库一步出错时, 请参考出错信息, 并下载安装所需的库.

6. 开始编译
  
  (1) 运行cmd.exe
  (2) 将当前目录设置为C:\ (如: cd ../..)
  (3) 运行v.bat (v.bat即上面提到的vcvars32.bat)
  (4) 进入目录 C:\wireshark (cd wireshark)
  (5) 输入
      nmake -f Makefile.nmake verify_tools
      以检测编译所需的工具. 如果成功, 显示像下面这样:
      ___________________________________________________________________
      C:\wireshark>nmake -f Makefile.nmake verify_tools
      Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
      Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
      Checking for required applications:
        cl: /cygdrive/e/dev/vc6/VC98/BIN/cl
        link: /cygdrive/e/dev/vc6/VC98/BIN/link
        nmake: /cygdrive/e/dev/vc6/VC98/BIN/nmake
        bash: /usr/bin/bash
        bison: /usr/bin/bison
        flex: /usr/bin/flex
        env: /usr/bin/env
        grep: /usr/bin/grep
        /usr/bin/find: /usr/bin/find
        perl: /usr/bin/perl
        C:/python24/python.exe: /cygdrive/c/python24/python.exe
        sed: /usr/bin/sed
        unzip: /usr/bin/unzip
        wget: /usr/bin/wget
      ___________________________________________________________________
  (6) 输入
      nmake -f Makefile.nmake setup
      来安装编译所需的库.
      如果失败, 请依提示去下载正确的库.
  (7) 输入
      nmake -f Makefile.nmake distclean
      来清除源代码中用于在其他平台下编译的文件.
  (8) 输入
      nmake -f Makefile.nmake all
      来编译wireshark!!!
      我用的机器配置为 P4 3.2GHz CPU, 1G RAM, 应该不算很低了, 但编译wireshark
      还是花了似乎有20分钟的时间.
      
      注意: 如果在编译过程中命令行窗口停滞不动, 而没有回到 C:\wireshark,
            不要关掉它!!! 因为此时编译程序正在进行大量的操作,如果真有什么错误
            编译完后会告诉你的, 别以为你机器死机了.

7. 运行编译后的程序
  
  打开 C:\wireshark\wireshark-gtk2 目录, 运行其中的wireshark.exe. 怎么样?看到
  熟悉的界面了吗? 如果是, 祝贺你编译成功!! 马上捕获一个包试试吧!
  打开Help菜单,查看wireshark选项卡, 看看在版本号那里显示的是不是你自己定义的版本?
  如"Version 0.99.7-myversion". 下面还显示了编译时的库和其他一些信息.
  





<img src ="http://www.cppblog.com/shandongluzi/aggbug/109302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2010-03-09 17:24 <a href="http://www.cppblog.com/shandongluzi/archive/2010/03/09/109302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何实现百万人同时在线并保持游戏高效率</title><link>http://www.cppblog.com/shandongluzi/archive/2009/04/25/81008.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Sat, 25 Apr 2009 00:48:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2009/04/25/81008.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/81008.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2009/04/25/81008.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/81008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/81008.html</trackback:ping><description><![CDATA[ 事实上，针对于任何单一的网络服务器程序，其可承受的同时连接数目是有理论峰值的，通过C＋＋中对TSocket的定义类型：word，我们可以判定这个连接理论峰值是65535，也就是说，你的单个服务器程序，最多可以承受6万多的用户同时连接。但是，在实际应用中，能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了，通常这个值都在2000到5000之间，据说QQ的单台服务器同时连接数目也就是在这个值这间。
　　如果要实现2000到5000用户的单服务器同时在线，是不难的。在windows下，比较成熟的技术是采用IOCP－－完成端口。与完成端口相关的资料在网上和CSDN论坛里有很多，感兴趣的朋友可以自己搜索一下。只要运用得当，一个完成端口服务器是完全可以达到2K到5K的同时在线量的。但，5K这样的数值离百万这样的数值实在相差太大了，所以，百万人的同时在线是单台服务器肯定无法实现的。
　　要实现百万人同时在线，首先要实现一个比较完善的完成端口服务器模型，这个模型要求至少可以承载2K到5K的同时在线率（当然，如果你MONEY多，你也可以只开发出最多允许100人在线的服务器）。在构建好了基本的完成端口服务器之后，就是有关服务器组的架构设计了。之所以说这是一个服务器组，是因为它绝不仅仅只是一台服务器，也绝不仅仅是只有一种类型的服务器。
　　简单地说，实现百万人同时在线的服务器模型应该是：大厅服务器(TMLcenterserver)＋登陆服务器(MainServer)＋房间服务器(Localserver)。 
当然，也可以是其它的模型，但其基本的思想是一样的。下面，我将逐一介绍这三类服务器的各自作用。
　　登陆服务器：一般情况下，我们会向玩家开放若干个公开的登陆服务器，就如QQ登陆时让你选择的从哪个QQ游戏服务器登陆一样，QQ登陆时让玩家选择的六个服务器入口实际上就是登陆服务器。登陆服务器主要完成负载平衡的作用。详细点说就是，在登陆服务器的背后，有N个大厅服务器，登陆服务器只是用于为当前的客户端连接选择其下一步应该连接到哪个大厅服务器，当登陆服务器为当前的客户端连接选择了一个合适的大厅服务器后，


客户端开始根据登陆服务器提供的信息连接到相应的大厅上去，同时客户端断开与登陆服务器的连接，为其他玩家客户端连接登陆服务器腾出套接字资源。在设计登陆服务器时，至少应该有以下功能：N个大厅服务器的每一个大厅服务器都要与所有的登陆服务器保持连接，并实时地把本大厅服务器当前的同时在线人数通知给各个登陆服务器，这其中包括：用户进入时的同时在线人数增加信息以及用户退出时的同时在线人数减少信息。这里的各个大厅服务器同时在线人数信息就是登陆服务器为客户端选择某个大厅让其登陆的依据。举例来说，玩家A通过登陆服务器1连接到登陆服务器，登陆服务器开始为当前玩家在众多的大厅服务器中根据哪一个大厅服务器人数比较少来选择一个大厅，同时把这个大厅的连接IP和端口发给客户端，客户端收到这个IP和端口信息后，根据这个信息连接到此大厅，同时，客户端断开与登陆服务器之间的连接，这便是用户登陆过程中，在登陆服务器这一块的处理流程。
　　大厅服务器：大厅服务器，是普通玩家看不到的服务器，它的连接IP和端口信息是登陆服务器通知给客户端的。也就是说，在游戏的本地文件中，具体的大厅服务器连接IP和端口信息是没有保存的。大厅服务器的主要作用是向玩家发送游戏房间列表信息，这些信息包括：每个游戏房间的类型，名称，在线人数，连接地址以及其它如游戏帮助文件URL的信息。从界面上看的话，大厅服务器就是我们输入用户名和密码并校验通过后进入的游戏房间列表界面。大厅服务器，主要有以下功能：一是向当前玩家广播各个游戏房间在线人数信息；二是提供游戏的版本以及下载地址信息；三是提供各个游戏房间服务器的连接IP和端口信息；四是提供游戏帮助的URL信息；五是提供其它游戏辅助功能。但在这众多的功能中，有一点是最为核心的，即：为玩家提供进入具体的游戏房间的通道，让玩家顺利进入其欲进入的游戏房间。玩家根据各个游戏房间在线人数，判定自己进入哪一个房间，然后双击服务器列表中的某个游戏房间后玩家开始进入游戏房间服务器。
　　游戏房间服务器：游戏房间服务器，具体地说就是如“斗地主1”，“斗地主2”这样的游戏房间。游戏房间服务器才是具体的负责执行游戏相关逻辑的服务器。这样的游戏逻辑分为两大类：一类是通用的游戏房间逻辑，如：进入房间，离开房间，进入桌子，离开桌子以及在房间内说话等；第二类是游戏桌子逻辑，这个就是各种不同类型游戏的主要区别之处了，比如斗地主中的叫地主或不叫地主的逻辑等，当然，游戏桌子逻辑里也包括有通用的各个游戏里都存在的游戏逻辑，比如在桌子内说话等。总之，游戏房间服务器才是真正负责执行游戏具体逻辑的服务器。
　　这里提到的三类服务器，我均采用的是完成端口模型，每个服务器最多连接数目是5000人，但是，我在游戏房间服务器上作了逻辑层的限定，最多只允许300人同时在线。其他两个服务器仍然允许最多5000人的同时在线。如果按照这样的结构来设计，那么要实现百万人的同时在线就应该是这样：首先是大厅，1000000/5000＝200。也就是说，至少要200台大厅服务器，但通常情况下，考虑到实际使用时服务器的处理能力和负载情况，应该至少准备250台左右的大厅服务器程序。另外，具体的各种类型的游戏房间服务器需要多少，就要根据当前玩各种类型游戏的玩家数目分别计算了，比如斗地主最多是十万人同时在线，每台服务器最多允许300人同时在线，那么需要的斗地主服务器数目就应该不少于：100000/300=333，准备得充分一点，就要准备350台斗地主服务器。
　　 除正常的玩家连接外，还要考虑到：
　　对于登陆服务器，会有250台大厅服务器连接到每个登陆服务器上，这是始终都要保持的连接；
　　而对于大厅服务器而言，如果仅仅有斗地主这一类的服务器，就要有350多个连接与各个大厅服务器始终保持着。核心思想是：尽快地提供用户登陆的速度，尽可能方便地让玩家进入游戏中。

<img src ="http://www.cppblog.com/shandongluzi/aggbug/81008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2009-04-25 08:48 <a href="http://www.cppblog.com/shandongluzi/archive/2009/04/25/81008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>树型动态规划</title><link>http://www.cppblog.com/shandongluzi/archive/2008/10/16/64086.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Thu, 16 Oct 2008 00:51:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2008/10/16/64086.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/64086.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2008/10/16/64086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/64086.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/64086.html</trackback:ping><description><![CDATA[关于传说中的"树型动态规划"在讨论题目的时候CC提及过。最近有幸找到一篇论文，相当激动，发现这个东东也比动态规划本身更容易理解。 <br><br>先来看一个比较有挑战性的题目：） <br><br><font style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FILTER: glow(color=#FFCC00,strength=3); PADDING-BOTTOM: 1px; COLOR: #ffffff; PADDING-TOP: 1px; HEIGHT: 10px"><strong><wbr></wbr><font color=#000000>战略游戏</font></strong><wbr></wbr></font><wbr></wbr><font color=#000000> <br></font><br><font style="LINE-HEIGHT: 1.3em">Problem </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">Bob喜欢玩电脑游戏，特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">他要建立一个古城堡，城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵，使得这些士兵能了望到所有的路。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">注意，某个士兵在一个结点上时，与该结点相连的所有边将都可以被了望到。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">请你编一程序，给定一树，帮Bob计算出他需要放置最少的士兵.</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">Input </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">第一行为一整数Ｍ，表示有Ｍ组测试数据 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">每组测试数据表示一棵树，描述如下： </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">第一行 N，表示树中结点的数目。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">第二行至第N+1行，每行描述每个结点信息，依次为：该结点标号i，k(后面有k条边与结点I相连)。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">接下来k个数，分别是每条边的另一个结点标号r1，r2，...，rk。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">对于一个n(0&lt;n&lt;=1500)个结点的树，结点标号在0到n-1之间，在输入数据中每条边只出现一次。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">Output </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">输出文件仅包含一个数，为所求的最少的士兵数目。</font><wbr></wbr> <br><br>－－－－－－－－－－－－－－－－－<wbr></wbr>－－－－－－－－－－－－－ <br><br>这个题目是04年高二准备NOIP的时候看到过，当时打死没有想出有效的解决方法。然后就拿着题目去问我们廖老师，廖老师一拿到题目题目还没看完，立马给出了解决方案：不会考这么难的题。于是这个题目也就遗留了下来，没想到事隔这么多年以后又重新见识了这个题目，倍感亲切，呵呵~。 <br><br>这个题目看上去想图论，贪心是明显错误的。用动态规划的思想可以很有效地解决。就看你能不能看出来是动态规划。就像杨潇说的：动态规划这类题，别人一说就明白，自己就很难想到。 <br>在给出这个题目的状态转移方程之前，我们先从更简单的树型动态规划入手，看看其他一些题目。 <br><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br><br><br><font style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FILTER: glow(color=#FFCC00,strength=3); PADDING-BOTTOM: 1px; COLOR: #ffffff; PADDING-TOP: 1px; HEIGHT: 10px"><wbr></wbr><font color=#000000><strong>二叉苹果树<wbr></wbr></strong></font></font><wbr></wbr> <br><br><font style="LINE-HEIGHT: 1.3em">题目 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">有一棵苹果树，如果树枝有分叉，一定是分2叉（就是说没有只有1个儿子的结点） </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">这棵树共有N个结点（叶子点或者树枝分叉点），编号为1-N,树根编号一定是1。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有4个树枝的树 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">&nbsp;&nbsp; 2&nbsp;&nbsp; 5 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">&nbsp;&nbsp;&nbsp; \ / </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp; 4 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ / </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">现在这颗树枝条太多了，需要剪枝。但是一些树枝上长有苹果。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">给定需要保留的树枝数量，求出最多能留住多少苹果。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">输入格式 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">第1行2个数，N和Q(1&lt;=Q&lt;= N,1&lt;N&lt;=100)。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">N表示树的结点数，Q表示要保留的树枝数量。接下来N-1行描述树枝的信息。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">每行3个整数，前两个是它连接的结点的编号。第3个数是这根树枝上苹果的数量。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">每根树枝上的苹果不超过30000个。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">输出格式 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">一个数，最多能留住的苹果的数量。 </font><wbr></wbr><br><br>－－－－－－－－－－－－－－－－－<wbr></wbr>－－－－－－－－－－－－－ <br><br><strong><wbr></wbr>分析：</strong><wbr></wbr>因为树是二叉的，所以状态转移方程很容易写出， <br>我们用a[i][j]描述树，f[i][m]表示第i个节点下，共保留m个树枝的最大苹果数目。 <br><strong><wbr></wbr>方程：</strong><wbr></wbr><font style="LINE-HEIGHT: 1.3em">f[i][m]=mas{ f[L][n]+f[m-n-2]+a[i][L]+a[i][ R]} </font><wbr></wbr>0&lt;=n&lt;=m-2 其中L,R为i的左右子树 <br><br><font style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FILTER: glow(color=#FFCC00,strength=3); PADDING-BOTTOM: 1px; COLOR: #ffffff; PADDING-TOP: 1px; HEIGHT: 10px"><strong><wbr></wbr><font color=#000000>选课</font></strong><wbr></wbr></font><wbr></wbr> <br><br><font style="LINE-HEIGHT: 1.3em">[问题描述] </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">在大学里每个学生，为了达到一定的学分，必须从很多课程里选择一些课程来学习，在课程里有些课程必须在某些课程之前学习，如高等数学总是在其它课程之前学习。现在有N门功课，每门课有个学分，每门课有一门或没有直接先修课（若课程a是课程b的先修课即只有学完了课程a，才能学习课程b）。一个学生要从这些课程里选择M门课程学习，问他能获得的最大学分是多少？</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">输入： </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">第一行有两个整数N,M用空格隔开。(1&lt;=N&lt;=200,1&lt;=M&lt;=150) </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">接下来的N行,第I+1行包含两个整数ki和si, ki表示第I门课的直接先修课，si表示第I门课的学分。若ki=0表示没有直接先修课（1&lt;=ki&lt;=N, 1&lt;=si&lt;=20）。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em">输出： </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">只有一行，选M门课程的最大得分。</font><wbr></wbr> <br><br>－－－－－－－－－－－－－－－－－<wbr></wbr>－－－－－－－－－－－－－ <br><br><strong><wbr></wbr>分析：</strong><wbr></wbr>这个题目是一个普通的树，关键步骤就是把这个普通的树转换为一颗二叉树，并且处理的时候特殊处理一下右子树。我自认为普通树转化为二叉树以后很难处理各个节点的辈份关系，但是对于这个题目来说，如果节点1,2,3都是节点0的孩子,那么转换后便成了这样: <br>&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; / |&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / <br>1&nbsp; 2&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1－2－3 <br>辈份虽然变了，但是还是有办法处理的。 <br><strong><wbr></wbr>方程：</strong><wbr></wbr>f[i][k]表示第i个节点下总共选择k门课的最大得分。s[i]表示课程i的得分。则 <br><font style="LINE-HEIGHT: 1.3em">f[i][k]=max{ s[i]+f[i.L][j]+f[i.R][k-j-1] , f[i.R][k] }</font><wbr></wbr> (0&lt;=j&lt;k) <br>其中后边那个f[i.R][k]就是处理转换为二叉树时的关系的。 <br><br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <br><br>看到这里，树型动态规划应该可以有个初步了解了，那么我们回到最初的那个题目&#8220;战略游戏&#8221;。 <br><strong><wbr></wbr>分析：</strong><wbr></wbr>首先选定一个节点作为根，然后从叶子向上DP，对于每个节点来说，分别记录它放士兵和不放士兵，其子树的最少士兵数。如果该节点放士兵，则不会制约它的子树和父亲，但是如果不放士兵，则会其子树和父亲都会影响。所以在设计动态转移方程的时候要有开阔的思路。 <br><strong><wbr></wbr>方程：</strong><wbr></wbr>f[v][0],f[v][1]分别表示节点v没有士兵和有士兵时，该子树中最少的士兵数。方程分两个 <br><font style="LINE-HEIGHT: 1.3em">f[v][0]={ ∑f[v.Son][1] }</font><wbr></wbr>&nbsp;&nbsp; //若该节点不放士兵,则它的孩子都放士兵 <br><font style="LINE-HEIGHT: 1.3em">f[v][1]={ ∑min{ f[v.Son][0], f[v.Son][1] }+1 }</font><wbr></wbr>&nbsp;&nbsp;&nbsp; //若该节点放士兵,则它的孩子可以放士兵也可以不放 <br><br>这样问题便完美解决了,时间复杂度O(n2) <br><br>下面再来一个题目作为思路扩展,和刚刚的题目类似: <br><br><br><font style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FILTER: glow(color=#FFCC00,strength=3); PADDING-BOTTOM: 1px; COLOR: #ffffff; PADDING-TOP: 1px; HEIGHT: 10px"><strong><wbr></wbr><font color=#000000>没有上司的晚会</font></strong><wbr></wbr></font><wbr></wbr> <br><br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>背景</font><wbr></wbr> <br><font style="LINE-HEIGHT: 1.3em">有个公司要举行一场晚会。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">为了能玩得开心，公司领导决定：如果邀请了某个人，那么一定不会邀请他的上司 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">（上司的上司，上司的上司的上司&#8230;&#8230;都可以邀请）。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>题目</font><wbr></wbr> <br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>每个参加晚会的人都能为晚会增添一些气氛，求一个邀请方案，使气氛值的和最大。</font><wbr></wbr> <br><br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>输入格式</font><wbr></wbr> <br><font style="LINE-HEIGHT: 1.3em">第1行一个整数N（1&lt;=N&lt;=6000）表示公司的人数。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">接下来N行每行一个整数。第i行的数表示第i个人的气氛值x(-128&lt;=x&lt;=127)。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">接下来每行两个整数L，K。表示第K个人是第L个人的上司。 </font><wbr></wbr><br><font style="LINE-HEIGHT: 1.3em">输入以0 0结束。</font><wbr></wbr> <br><br><br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>输出格式</font><wbr></wbr> <br><font style="LINE-HEIGHT: 1.3em" face=仿宋_GB2312>一个数，最大的气氛值和。</font><wbr></wbr> <br>
<img src ="http://www.cppblog.com/shandongluzi/aggbug/64086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2008-10-16 08:51 <a href="http://www.cppblog.com/shandongluzi/archive/2008/10/16/64086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1062 Text Reverse</title><link>http://www.cppblog.com/shandongluzi/archive/2008/10/09/63579.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Thu, 09 Oct 2008 11:32:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2008/10/09/63579.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/63579.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2008/10/09/63579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/63579.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/63579.html</trackback:ping><description><![CDATA[<h1 style="COLOR: #1a5cc8">Text Reverse</h1>
<font size=+0><strong><span style="FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: green; FONT-FAMILY: Arial">Time Limit: 2000/1000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 65536/32768 K (Java/Others)<br>Total Submission(s): 1391&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 577<br></span></strong></font><br><br>
<div class=panel_title align=left>Problem Description</div>
<div class=panel_content>Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them.<br></div>
<div class=panel_bottom>&nbsp;</div>
<br>
<div class=panel_title align=left>Input</div>
<div class=panel_content>The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.<br>Each test case contains a single line with several words. There will be at most 1000 characters in a line.<br></div>
<div class=panel_bottom>&nbsp;</div>
<br>
<div class=panel_title align=left>Output</div>
<div class=panel_content>For each test case, you should output the text which is processed.<br></div>
<div class=panel_bottom>&nbsp;</div>
<br>
<div class=panel_title align=left>Sample Input</div>
<div class=panel_content>
<pre>3
olleh !dlrow
m'I morf .udh
I ekil .mca</pre>
</div>
<div class=panel_bottom>&nbsp;</div>
<br>
<div class=panel_title align=left>Sample Output</div>
<div class=panel_content>
<pre>hello world!
I'm from hdu.
I like acm.
<div style="BORDER-RIGHT: #b7cbff 1px dashed; PADDING-RIGHT: 6px; BORDER-TOP: #b7cbff 1px dashed; PADDING-LEFT: 6px; FONT-SIZE: 14px; PADDING-BOTTOM: 6px; BORDER-LEFT: #b7cbff 1px dashed; PADDING-TOP: 6px; BORDER-BOTTOM: #b7cbff 1px dashed; FONT-FAMILY: Times New Roman; BACKGROUND-COLOR: #f4fbff">
<div style="FONT-WEIGHT: bold; COLOR: #7ca9ed; BORDER-BOTTOM: #b7cbff 1px dashed; FONT-FAMILY: Arial"><em>Hint</em></div>
Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.
</div>
<em style="FONT-SIZE: 1px"> </em></pre>
</div>
<div class=panel_bottom>&nbsp;</div>
<br>
<div class=panel_title align=left>Author</div>
<div class=panel_content>Ignatius.L</div>
<div class=panel_bottom>&nbsp;</div>
#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; int i=0,n,length,t,j;<br>&nbsp;&nbsp;&nbsp; char ch,p[1001],temp;<br>&nbsp;&nbsp;&nbsp; scanf("%d",&amp;n);<br>&nbsp;&nbsp;&nbsp; ch=getchar();<br>&nbsp;&nbsp;&nbsp; while(n--)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gets(p);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; length=strlen(p);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;=length;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(p[i]==' '||p[i]=='\0')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=t;j&lt;(i+t)/2;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=p[j];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[j]=p[i-j+t-1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[i-j+t-1]=temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=i+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n",p);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br>
<img src ="http://www.cppblog.com/shandongluzi/aggbug/63579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2008-10-09 19:32 <a href="http://www.cppblog.com/shandongluzi/archive/2008/10/09/63579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Problem H: Reverse Roman Notation</title><link>http://www.cppblog.com/shandongluzi/archive/2008/09/23/62626.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Tue, 23 Sep 2008 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2008/09/23/62626.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/62626.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2008/09/23/62626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/62626.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/62626.html</trackback:ping><description><![CDATA[<p>#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;ctype.h&gt;<br>char * index( const char *s, int c);<br>/* <br>** State machine for romantoint<br>**<br>**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I<br>**&nbsp; 0: +1000/0&nbsp; +500/0&nbsp; +100/1&nbsp;&nbsp; +50/0&nbsp;&nbsp; +10/2&nbsp;&nbsp;&nbsp; +5/0&nbsp;&nbsp;&nbsp; +1/3<br>**&nbsp; 1:&nbsp; +800/0&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; +100/0&nbsp;&nbsp; +50/0&nbsp;&nbsp; +10/2&nbsp;&nbsp;&nbsp; +5/0&nbsp;&nbsp;&nbsp; +1/3<br>**&nbsp; 2:&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +80/0&nbsp;&nbsp; +30/0&nbsp;&nbsp; +10/2&nbsp;&nbsp;&nbsp; +5/0&nbsp;&nbsp;&nbsp; +1/3<br>**&nbsp; 3:&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +8/0&nbsp;&nbsp;&nbsp; +3/0&nbsp;&nbsp;&nbsp; +1/3<br>**<br>*/</p>
<p>int FromRoman(char *s)<br>{<br>&nbsp;&nbsp;&nbsp; int n=0;<br>&nbsp;&nbsp;&nbsp; int prev=0;</p>
<p>&nbsp;&nbsp;&nbsp; while (*s!=' '&amp;&amp;*s!=NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (toupper(*s)) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'M':&nbsp;&nbsp; n += 1000 - prev*2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'D':&nbsp;&nbsp; n +=&nbsp; 500 - prev*2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'C':&nbsp;&nbsp; n +=&nbsp; 100;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (prev &lt; 100) n -= 2*prev;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=100;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'L':&nbsp;&nbsp; n +=&nbsp;&nbsp; 50;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (prev &lt;&nbsp; 50) n -= 2*prev;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'X':&nbsp;&nbsp; n +=&nbsp;&nbsp; 10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (prev &lt;&nbsp; 10) n -= 2*prev;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'V':&nbsp;&nbsp; n +=&nbsp;&nbsp;&nbsp; 5;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (prev &lt;&nbsp;&nbsp; 5) n -= 2*prev;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'I':&nbsp;&nbsp; n +=&nbsp;&nbsp;&nbsp; 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s++;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return n;<br>}</p>
<p>void PrintRoman(int n)<br>{</p>
<p>&nbsp;&nbsp;&nbsp; if (n&lt;=0 || n&gt;4999)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("out of range exception\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; while (n/1000) <br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("M");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n -= 1000;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; switch(n/100) <br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: printf("C");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: printf("CC");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: printf("CCC");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4: printf("CD");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 5: printf("D");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 6: printf("DC");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 7: printf("DCC");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 8: printf("DCCC"); break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 9: printf("CM");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; n %= 100;</p>
<p>&nbsp;&nbsp;&nbsp; switch(n/10)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: printf("X");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: printf("XX");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: printf("XXX");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4: printf("XL");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 5: printf("L");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 6: printf("LX");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 7: printf("LXX");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 8: printf("LXXX"); break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 9: printf("XC");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; n %= 10;<br>&nbsp;&nbsp;&nbsp; switch(n) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: printf("I");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: printf("II");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: printf("III");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4: printf("IV");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 5: printf("V");&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 6: printf("VI");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 7: printf("VII");&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 8: printf("VIII"); break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 9: printf("IX");&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; printf("\n");<br>}</p>
<p>#define STACKSIZE 1024<br>int nitems=0;<br>int stack[STACKSIZE];</p>
<p>int Pop()<br>{<br>&nbsp;&nbsp;&nbsp; if (!nitems) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; return stack[--nitems];<br>}</p>
<p>void Push(int n)<br>{<br>&nbsp;&nbsp;&nbsp; if (nitems == STACKSIZE-1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack overflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; stack[nitems++] = n;<br>}</p>
<p><br>int PrintTop(void) <br>{<br>&nbsp;&nbsp;&nbsp; if (!nitems) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintRoman(stack[nitems-1]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>int PerformAdd(void)<br>{<br>&nbsp;&nbsp;&nbsp; int x,y;<br>&nbsp;&nbsp;&nbsp; if (nitems &lt; 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; y = Pop();<br>&nbsp;&nbsp;&nbsp; x = Pop();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Push(x+y);</p>
<p>&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>int PerformSub(void)<br>{<br>&nbsp;&nbsp;&nbsp; int x,y;<br>&nbsp;&nbsp;&nbsp; if (nitems &lt; 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; y = Pop();<br>&nbsp;&nbsp;&nbsp; x = Pop();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Push(x-y);</p>
<p>&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>int PerformMul(void)<br>{<br>&nbsp;&nbsp;&nbsp; int x,y;<br>&nbsp;&nbsp;&nbsp; if (nitems &lt; 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; y = Pop();<br>&nbsp;&nbsp;&nbsp; x = Pop();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Push(x*y);</p>
<p>&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>int PerformDiv(void)<br>{<br>&nbsp;&nbsp;&nbsp; int x,y;<br>&nbsp;&nbsp;&nbsp; if (nitems &lt; 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("stack underflow\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; y = Pop();<br>&nbsp;&nbsp;&nbsp; x = Pop();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (y!=0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Push(x/y);<br>&nbsp;&nbsp;&nbsp; else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("division by zero exception\n");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Push(x);<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>main()<br>{<br>&nbsp;&nbsp;&nbsp; char line[256];<br>&nbsp;//freopen("H.in","r",stdin);<br>//&nbsp;freopen("H.out","w",stdout);<br>&nbsp;&nbsp;&nbsp; while (fgets(line,sizeof(line),stdin)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (line[0] == '=') <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintTop();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (line[0] == '+') <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PerformAdd();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (line[0] == '-') <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PerformSub();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (line[0] == '*') <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PerformMul();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (line[0] == '/') <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PerformDiv();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n = FromRoman(line);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (n &gt; 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Push(n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/shandongluzi/aggbug/62626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2008-09-23 20:51 <a href="http://www.cppblog.com/shandongluzi/archive/2008/09/23/62626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>狼的格言</title><link>http://www.cppblog.com/shandongluzi/archive/2008/08/14/58811.html</link><dc:creator>岁月流逝</dc:creator><author>岁月流逝</author><pubDate>Thu, 14 Aug 2008 01:41:00 GMT</pubDate><guid>http://www.cppblog.com/shandongluzi/archive/2008/08/14/58811.html</guid><wfw:comment>http://www.cppblog.com/shandongluzi/comments/58811.html</wfw:comment><comments>http://www.cppblog.com/shandongluzi/archive/2008/08/14/58811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shandongluzi/comments/commentRss/58811.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shandongluzi/services/trackbacks/58811.html</trackback:ping><description><![CDATA[<h2>狼的格言</h2>
<div class=t_msgfont id=postmessage_1370547>&nbsp;&nbsp;一、&nbsp;&nbsp;卧薪尝胆<font style="FONT-SIZE: 0px; COLOR: #fff">( o8 R; y" Z. q&amp; N/ j( F) O</font><br>狼不会为了所谓的尊严在自己弱小时攻击比自己强大的东西<font style="FONT-SIZE: 0px; COLOR: #fff">6 I6 F0 h% B4 ?+ N3 y9 v</font><br>二、&nbsp;&nbsp;众狼一心<font style="FONT-SIZE: 0px; COLOR: #fff">* B, B&nbsp;&nbsp;Q7 {* e. q&nbsp;&nbsp;t</font><br>如果狼不得不面对比自己强大的东西，必群起而攻之<font style="FONT-SIZE: 0px; COLOR: #fff">- r/ p% G&amp; t# |( p&amp; z7 D</font><br>三、&nbsp;&nbsp;自知之明<br><span style="DISPLAY: none">- F% p/ z$ Y* B+ q&nbsp;&nbsp;w8 K( Z, k3 ^2 `</span>狼很想当兽王，而狼知道自己是狼而不是虎<font style="FONT-SIZE: 0px; COLOR: #fff">: |4 ?% b&nbsp;&nbsp;D1 D# Q' ~! a$ b</font><br>四、&nbsp;&nbsp;顺水行舟<font style="FONT-SIZE: 0px; COLOR: #fff">3 A8 J+ i2 Y&nbsp;&nbsp;W2 ?&amp; R+ z# O' Q4 a( Y</font><br>狼知道如何用最小的代价换取最大的回报<br><span style="DISPLAY: none">2 l&amp; R/ o) O: F" V7 g" ?+ p; P7 o) j</span>五、&nbsp;&nbsp;同进同退<br><span style="DISPLAY: none">+ r4 K2 h&amp; D2 u; [- |) t</span>狼虽然通常独自<span class=t_tag onclick=tagshow(event) href="tag.php?name=%BB%EE%B6%AF">活动</span>，但狼是最团结的，你不会发现哪只狼在同伴受伤时独自逃走<font style="FONT-SIZE: 0px; COLOR: #fff">% c9 R" d# D, O. p+ L/ g) o</font><br>六、&nbsp;&nbsp;表里如一<font style="FONT-SIZE: 0px; COLOR: #fff">2 ^' f+ j5 h! [7 E&amp; u) h% @</font><br>狼也很想善良，但狼知道自己的胃能消化什么，所以狼每次都干干净净的吃掉每次的猎物，可有些自认为&#8220;善良&#8221;的动物却在酒店饭庄里做些不是&#8220;很善良&#8221;的事<font style="FONT-SIZE: 0px; COLOR: #fff">( w( D&amp; P8 ?8 ~# G' g</font><br>七、&nbsp;&nbsp;狼亦钟情<font style="FONT-SIZE: 0px; COLOR: #fff">9 Z, ~( g) G9 R; [$ p- Q</font><br>狼会一直守在怀孕的母狼身边直至小狼长大，可某些自认为&#8220;唯一有感情&#8221;的动物，却在妻子怀孕时在外花天酒地<br><span style="DISPLAY: none">) ]* l) |# B0 z</span>八、&nbsp;&nbsp;授狼以渔<br><span style="DISPLAY: none">5 Z3 ]! p8 f# {</span>狼会在小狼有独立能力的时候坚决的离开他，因为狼知道，如果当不成狼那就只能当羊<font style="FONT-SIZE: 0px; COLOR: #fff">9 x1 D% C, G. s! [3 E+ g5 a</font><br>九、&nbsp;&nbsp;自由可贵<br><span style="DISPLAY: none">9 \4 r! x+ q! p' s$ a( ^</span>狼不会为了食物而不顾尊严的向主人摇头摆尾，因为狼知道，不可有傲气，但决不可无傲骨<br><span style="DISPLAY: none">&nbsp;&nbsp;}. C$ N&nbsp;&nbsp;`. _+ }! t</span>十、&nbsp;&nbsp;尊重对手<br><span style="DISPLAY: none">' k+ d! U9 {8 o&nbsp;&nbsp;n- }- A</span>狼尊重每个对手，狼在每次攻击前都会去了解对手，而不会去轻视他，所以狼一生的攻击很少失误</div>
<img src ="http://www.cppblog.com/shandongluzi/aggbug/58811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shandongluzi/" target="_blank">岁月流逝</a> 2008-08-14 09:41 <a href="http://www.cppblog.com/shandongluzi/archive/2008/08/14/58811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>