﻿<?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++博客-I believe-随笔分类-格式.输入输出.数据类型</title><link>http://www.cppblog.com/luyulaile/category/11056.html</link><description>I  can</description><language>zh-cn</language><lastBuildDate>Tue, 22 Feb 2011 10:06:36 GMT</lastBuildDate><pubDate>Tue, 22 Feb 2011 10:06:36 GMT</pubDate><ttl>60</ttl><item><title>Java与C++的区别</title><link>http://www.cppblog.com/luyulaile/archive/2011/02/14/140003.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 13 Feb 2011 17:32:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2011/02/14/140003.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/140003.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2011/02/14/140003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/140003.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/140003.html</trackback:ping><description><![CDATA[<p>(1)指针和引用的问题<br>java中没有指针，但是数组名，对象名都是其引用，<br>指针还有常量指针，比如数组名<br>(2)new的区别<br>java中的new返回对象的应用<br>c++中的new返回其指针，<br>如果c++中<br>SparseMatrix s=SparseMatrix(4,4,6,arrays);<br>如果java中<br>SparseMatrix s=new SparseMatrix(4,4,6,arrays);<br><br></p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/140003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2011-02-14 01:32 <a href="http://www.cppblog.com/luyulaile/archive/2011/02/14/140003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存划分，堆栈区分</title><link>http://www.cppblog.com/luyulaile/archive/2011/02/14/140002.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 13 Feb 2011 17:14:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2011/02/14/140002.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/140002.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2011/02/14/140002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/140002.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/140002.html</trackback:ping><description><![CDATA[<p>原文地址<a href="http://www.ksarea.com/articles/20070829_memory-partition-stack-heap-difference.html">http://www.ksarea.com/articles/20070829_memory-partition-stack-heap-difference.html</a><br><br>一直对内存区域的划分，程序变量的内存分配问题模糊不清。进行多方参考总结如下。</p>
<p>一、一个经过编译的C/C++的程序占用的内存分成以下几个部分：<br>1、栈区（stack）：由编译器自动分配和释放&nbsp;，存放函数的参数值、局部变量的值等，甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。<br>2、堆区（heap）&nbsp;：一般由程序员手动申请以及释放，&nbsp;若程序员不释放，程序结束时可能由OS回收&nbsp;。注意它与数据结构中的堆是两回事，分配方式类似于链表。<br>3、全局区（静态区）（static）：全局变量和静态变量的存储是放在一块的，初始化的全局变量和静态变量在一块区域，&nbsp;未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放空间。&nbsp;<br>4、文字常量区：常量字符串就是放在这里的。&nbsp;程序结束后由系统释放空间。<br>5、程序代码区：存放函数体的二进制代码。</p>
<p>下面的例子可以完全展示不同的变量所占的内存区域：<br><coolcode lang=cpp linenum="off"><br>//main.cpp<br>int a = 0; 全局初始化区<br>char *p1; 全局未初始化区<br>main()<br>{<br>int b; //栈中<br>char s[] = &#8220;abc&#8221;; //栈中<br>char *p2; //栈中<br>char *p3 = &#8220;123456&#8243;; //123456\0在常量区，p3在栈上<br>static int c =0； //全局（静态）初始化区<br>//以下分配得到的10和20字节的区域就在堆区<br>p1 = (char *)malloc(10);<br>p2 = (char *)malloc(20);<br>strcpy(p1, &#8220;123456&#8243;); //123456\0放在常量区，编译器可能会将它与p3所指向的&#8221;123456&#8243;优化成一个地方。<br>} </coolcode><br><span id=more-124></span><br>二、栈（stack）和堆（heap）具体的区别。<br>1、在申请方式上<br>栈（stack）: 现在很多人都称之为堆栈，这个时候实际上还是指的栈。它由编译器自动管理，无需我们手工控制。 例如，声明函数中的一个局部变量 int b 系统自动在栈中为b开辟空间；在调用一个函数时，系统自动的给函数的形参变量在栈中开辟空间。<br>堆（heap）: 申请和释放由程序员控制，并指明大小。容易产生memory leak。<br>在C中使用malloc函数。<br>如：p1 = (char *)malloc(10);<br>在C++中用new运算符。<br>如：p2 = (char *)malloc(10);<br>但是注意p1本身在全局区，而p2本身是在栈中的，只是它们指向的空间是在堆中。</p>
<p>2、申请后系统的响应上<br>栈（stack）:只要栈的剩余空间大于所申请空间，系统将为程序提供内存，否则将报异常提示栈溢出。<br>堆（heap）: 首先应该知道操作系统有一个记录空闲内存地址的链表，当系统收到程序的申请时， 会遍历该链表，寻找第一个空间大于所申请空间的堆结点，然后将该结点从空闲结点链表中删除，并将该结点的空间分配给程序。另外，对于大多数系统，会在这块内存空间中的首地址处记录本次分配的大小，这样，代码中的delete或free语句才能正确的释放本内存空间。另外，由于找到的堆结点的大小不一定正好等于申请的大小，系统会自动的将多余的那部分重新放入空闲链表中。</p>
<p>3、申请大小的限制<br>栈（stack）:在Windows下,栈是向低地址扩展的数据结构，是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的，在WINDOWS下，栈的大小是2M（也有的说是1M，总之是一个编译时就确定的常数），如果申请的空间超过栈的剩余空间时，将提示overflow。因此，能从栈获得的空间较小。 例如，在VC6下面，默认的栈空间大小是1M（好像是，记不清楚了）。当然，我们可以修改：打开工程，依次操作菜单如下：Project-&gt;Setting-&gt;Link，在Category 中选中Output，然后在Reserve中设定堆栈的最大值和commit。<br><strong>注意</strong>：reserve最小值为4Byte；commit是保留在虚拟内存的页文件里面，它设置的较大会使栈开辟较大的值，可能增加内存的开销和启动时间。</p>
<p>堆（heap）: 堆是向高地址扩展的数据结构，是不连续的内存区域（空闲部分用链表串联起来）。正是由于系统是用链表来存储空闲内存，自然是不连续的，而链表的遍历方向是由低地址向高地址。一般来讲在32位系统下，堆内存可以达到4G的空间，从这个角度来看堆内存几乎是没有什么限制的。由此可见，堆获得的空间比较灵活，也比较大。</p>
<p>4、分配空间的效率上<br>栈（stack）:栈是机器系统提供的数据结构，计算机会在底层对栈提供支持：分配专门的寄存器存放栈的地址，压栈出栈都有专门的指令执行，这就决定了栈的效率比较高。但程序员无法对其进行控制。<br>堆（heap）:是C/C++函数库提供的，由new或malloc分配的内存，一般速度比较慢，而且容易产生内存碎片。它的机制是很复杂的，例如为了分配一块内存，库函数会按照一定的算法（具体的算法可以参考数据结构/操作系统）在堆内存中搜索可用的足够大小的空间，如果没有足够大小的空间（可能是由于内存碎片太多），就有可能调用系统功能去增加程序数据段的内存空间，这样就有机会分到足够大小的内存，然后进行返回。这样可能引发用户态和核心态的切换，内存的申请，代价变得更加昂贵。显然，堆的效率比栈要低得多。</p>
<p>5、堆和栈中的存储内容<br>栈（stack）:在函数调用时，第一个进栈的是主函数中子函数调用后的下一条指令（子函数调用语句的下一条可执行语句）的地址，然后是子函数的各个形参。在大多数的C编译器中，参数是由右往左入栈的，然后是子函数中的局部变量。注意：静态变量是不入栈的。 当本次函数调用结束后，局部变量先出栈，然后是参数，最后栈顶指针指向最开始存的地址，也就是主函数中子函数调用完成的下一条指令，程序由该点继续运行。<br>堆（heap）:一般是在堆的头部用一个字节存放堆的大小，堆中的具体内容有程序员安排。</p>
<p>6、存取效率的比较<br>这个应该是显而易见的。拿栈上的数组和堆上的数组来说：<br><coolcode lang=cpp linenum="off"><br>void main()<br>{<br>int arr[5]={1,2,3,4,5};<br>int *arr1;<br>arr1=new int[5];<br>for (int j=0;j&lt;=4;j++)<br>{<br>arr1[j]=j+6;<br>}<br>int a=arr[1];<br>int b=arr1[1];<br>}<br></coolcode><br>上面代码中，arr1（局部变量）是在栈中，但是指向的空间确在堆上，两者的存取效率，当然是arr高。因为arr[1]可以直接访问，但是访问arr1[1]，首先要访问数组的起始地址arr1，然后才能访问到arr1[1]。</p>
<p>总而言之，言而总之：<br>堆和栈的区别可以用如下的比喻来看出：<br>使用栈就象我们去饭馆里吃饭，只管点菜（声明变量）、付钱、和吃（使用），吃饱了就走，不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作，他的好处是快捷，但是自由度小。<br>使用堆就象是自己动手做喜欢吃的菜肴，比较麻烦，但是比较符合自己的口味，而且自由度大</p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/140002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2011-02-14 01:14 <a href="http://www.cppblog.com/luyulaile/archive/2011/02/14/140002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++对象数组作为类成员的问题</title><link>http://www.cppblog.com/luyulaile/archive/2011/02/14/140001.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 13 Feb 2011 17:08:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2011/02/14/140001.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/140001.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2011/02/14/140001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/140001.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/140001.html</trackback:ping><description><![CDATA[例如：<br>class ObjectB{};<br><br>class ObjectA{<br>public:<br>&nbsp;&nbsp;&nbsp;&nbsp;ObjectB array[5];//对象数组作为类的成员<br>}<br><br>那样的话对象数组的初始化会变得很麻烦，<br>因为数组名不能作为左值，所以不可以指针传递的方式赋值。<br>而且不能通过参数列表（构造函数后面加一个冒号）的方式初始化，<br>所以只能让类ObjectA自动调用类ObjectB的无参构造函数.<br>---------------<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_57_114_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_114_Open_Text.style.display='none'; Codehighlighter1_57_114_Closed_Image.style.display='inline'; Codehighlighter1_57_114_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_57_114_Closed_Image onclick="this.style.display='none'; Codehighlighter1_57_114_Closed_Text.style.display='none'; Codehighlighter1_57_114_Open_Image.style.display='inline'; Codehighlighter1_57_114_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;ObjectB</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_57_114_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_57_114_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;ObjectB(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_102_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_102_112_Open_Text.style.display='none'; Codehighlighter1_102_112_Closed_Image.style.display='inline'; Codehighlighter1_102_112_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_102_112_Closed_Image onclick="this.style.display='none'; Codehighlighter1_102_112_Closed_Text.style.display='none'; Codehighlighter1_102_112_Open_Image.style.display='inline'; Codehighlighter1_102_112_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_102_112_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_102_112_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_132_312_Open_Image onclick="this.style.display='none'; Codehighlighter1_132_312_Open_Text.style.display='none'; Codehighlighter1_132_312_Closed_Image.style.display='inline'; Codehighlighter1_132_312_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_132_312_Closed_Image onclick="this.style.display='none'; Codehighlighter1_132_312_Closed_Text.style.display='none'; Codehighlighter1_132_312_Open_Image.style.display='inline'; Codehighlighter1_132_312_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;ObjectA</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_132_312_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_132_312_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectB&nbsp;&nbsp;&nbsp;Array[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">];&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectA(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)<br><img id=Codehighlighter1_215_309_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_309_Open_Text.style.display='none'; Codehighlighter1_215_309_Closed_Image.style.display='inline'; Codehighlighter1_215_309_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_215_309_Closed_Image onclick="this.style.display='none'; Codehighlighter1_215_309_Closed_Text.style.display='none'; Codehighlighter1_215_309_Open_Image.style.display='inline'; Codehighlighter1_215_309_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_215_309_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_215_309_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ObjectB(p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ObjectB(p[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ObjectB(p[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_327_418_Open_Image onclick="this.style.display='none'; Codehighlighter1_327_418_Open_Text.style.display='none'; Codehighlighter1_327_418_Closed_Image.style.display='inline'; Codehighlighter1_327_418_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_327_418_Closed_Image onclick="this.style.display='none'; Codehighlighter1_327_418_Closed_Text.style.display='none'; Codehighlighter1_327_418_Open_Image.style.display='inline'; Codehighlighter1_327_418_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_327_418_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_327_418_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_339_349_Open_Image onclick="this.style.display='none'; Codehighlighter1_339_349_Open_Text.style.display='none'; Codehighlighter1_339_349_Closed_Image.style.display='inline'; Codehighlighter1_339_349_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_339_349_Closed_Image onclick="this.style.display='none'; Codehighlighter1_339_349_Closed_Text.style.display='none'; Codehighlighter1_339_349_Open_Image.style.display='inline'; Codehighlighter1_339_349_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;p[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_339_349_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_339_349_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;ObjectA&nbsp;am</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ObjectA(p);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">am.Array[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<br>---------------<br><br>我们可以使用替代方式：<br>class A{};<br><br>classB{<br>public:<br>&nbsp;&nbsp;&nbsp; A*a;//A类型的指针作为类的成员<br>}<br>同样带来很大的问题，<br>（1）浅拷贝，深拷贝的问题，除非重载拷贝构造函数，类B才能实现深拷贝，因为成员中有指针，所以无法简单的用拷贝构造函数生成一个新对象，而用无参构造函数生成的新对象也会有问题，因为里面的指针一般都默认为NULL了。<br><br><strong>重载拷贝构造函数的时候需要申请一定长度的内存，将拷贝对象的指针所指向的空间拷贝到新申请的空间，再进行操作。注意申请后要释放。<br>一个拷贝构造函数的例子<br></strong>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">SparseMatrix::SparseMatrix(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;SparseMatrix</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">s)<br><img id=Codehighlighter1_50_146_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_146_Open_Text.style.display='none'; Codehighlighter1_50_146_Closed_Image.style.display='inline'; Codehighlighter1_50_146_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_50_146_Closed_Image onclick="this.style.display='none'; Codehighlighter1_50_146_Closed_Text.style.display='none'; Codehighlighter1_50_146_Open_Image.style.display='inline'; Codehighlighter1_50_146_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_50_146_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_50_146_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rows</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">s.Rows;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;Cols</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">s.Cols;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;Count</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">s.Count;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;smArray</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Trituple[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">此处还需要复制对象</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br><br>----------------------<br>补充知识：<br>------------------http://www.ksarea.com/articles/20070829_memory-partition-stack-heap-difference.html<br>
<p>C/C++应该是大学里最先接触的编程语言，它们的重要性不言而喻。但是我始终抱着&#8220;数组名就是指针&#8221;的错误信条到现在，可能是因为大学老师错误的讲解使我一直保留着这种误解。指针是C/C++语言的特色，而数组名与指针有太多的相似，甚至很多时候，数组名可以作为指针使用，所以也难免在学习中将两者混淆。这里介绍下指针和数组名的区别:</p>
<p>1.指针和数组名占据的内存空间大小不一样，如下程序1：<br><coolcode lang=cpp><br>char str[10];<br>char *pstr=str;<br>cout&lt;<sizeof(str)>&lt;<endl;><br>cout&lt;&lt;sizeof<sizeof(pstr);><br></sizeof(pstr);><br>第一行输出结果是：10，第二行输出结果是：4</endl;></sizeof(str)></coolcode></p>
<p>从这里我们可以看出：<strong>数组名对应着（而不是指向）一块内存（数组所占的内存区域）或者说是指代数组这种数据结构，其地址与容量在生命期内保持不变，只有数组的内容可以改变。指针对应着一个占据4个字节（Win32）的内存区域，而指向这4个字节所存储的地址所对应的内存单元，它可以指向任意类型的内存块。因此，sizeof(str)值为数组占据的内存空间大小即10个字节，而sizeof(pstr)值为指针的值占据的内存空间大小即4个字节。</strong></p>
<p>2.数组名不是指针，但是在一定的情况下转换为指代数组的首地址的指针，而这个数组名转为的指针只能是指针常量。<br>在以下两种情况下才能进行这种转换：<br>a.在程序1第二行代码中，将数组名直接赋值给指针，此时数组名转换为指向数组的首单元的常量指针。<br>b.直接将数组名作为指针形参的时候，数组名则转换为指向数组的首单元的常量指针进行传递，如下程序2：<br><coolcode lang=cpp><br>void fun(char str[])<br>{<br>cout&lt;<sizeof(str)>&lt;<endl;><br>str++;<br>}<br>void main()<br>{<br>&#8230;<br>char str1[5];<br>fun(str1);<br>&#8230;<br>}<br></endl;><br>注意：数组名作为函数形参进行传递时，在子函数体内，它已经不再是一个指针常量，而是变成一个真正的指针，可以进行增减等操作，可以被修改。所以程序2中子程序第一条语句输出的sizeof(str)的值为4.</sizeof(str)></coolcode></p>
<p>既然数组名可以被看作指针常量，而常量是不能修改的，那么如下代码是不允许的：<br><coolcode lang=cpp><br>char str[10];<br>str++;<br></coolcode><br>但如下代码则合法的：<br><coolcode lang=cpp><br>char str[10];<br>char *pstr=str;<br>pstr++;<br></coolcode><br>3.使用指针访问数组和使用数组名访问数组本质不同。<br>例如：<br><coolcode lang=cpp><br>char str[7]=&#8221;ksarea&#8221;;<br>char *pstr=str;<br>cout&lt;<str[3]>&lt;<endl>&lt;</p>
<pstr[3];></pstr[3];>
</endl><br>其中<strong>str[3]和pstr[3]返回的都是字符&#8217;r'，但是编译器产生的执行代码却不一样。对于str[3]，执行代码是从str开始，向后移动两个字节，然后取出其中的字符；而对于pstr[3]，执行代码是从pstr中取出地址，然后在其上加3，然后取出对应内存中的字符。</strong>当然，如果pstr是指向int型的指针，那么pstr[3]的处理过程是从pstr中取出地址，然后在其上加上3*sizeof(int)，最后取出对应内存中的字符，其他的数据类型一次类推。 
<img src ="http://www.cppblog.com/luyulaile/aggbug/140001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2011-02-14 01:08 <a href="http://www.cppblog.com/luyulaile/archive/2011/02/14/140001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 命名规范zt</title><link>http://www.cppblog.com/luyulaile/archive/2010/12/21/137128.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Tue, 21 Dec 2010 08:44:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2010/12/21/137128.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/137128.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2010/12/21/137128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/137128.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/137128.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">完全版java规范：<a href="http://www.huihoo.org/code/java_code_conventions.html#71">http://www.huihoo.org/code/java_code_conventions.html#71</a><br><br>&nbsp; <img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/luyulaile/QQ.gif" width=532 height=550></p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/137128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2010-12-21 16:44 <a href="http://www.cppblog.com/luyulaile/archive/2010/12/21/137128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>switch表达式</title><link>http://www.cppblog.com/luyulaile/archive/2010/12/19/136959.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 19 Dec 2010 13:41:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2010/12/19/136959.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/136959.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2010/12/19/136959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/136959.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/136959.html</trackback:ping><description><![CDATA[<span style="COLOR: red"><font size=2>switch(表达式)<br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 常量表达式1:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 语句1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 常量表达式2:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 语句2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; </font>
<p><font size=2></font></p>
<p><font size=2>&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 常量表达式n:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 语句n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; </font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 语句n+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>}</font></p>
</span>
<img src ="http://www.cppblog.com/luyulaile/aggbug/136959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2010-12-19 21:41 <a href="http://www.cppblog.com/luyulaile/archive/2010/12/19/136959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>argmax</title><link>http://www.cppblog.com/luyulaile/archive/2010/12/19/136937.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 19 Dec 2010 06:58:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2010/12/19/136937.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/136937.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2010/12/19/136937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/136937.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/136937.html</trackback:ping><description><![CDATA[argmax{f(x,y): x属于X}是f(x,y)在X上达到最大值时的x值， 这个x值是y的函数，于是就 x(y):=argmax{f(x,y): x属于X}
<p>&#160;</p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/136937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2010-12-19 14:58 <a href="http://www.cppblog.com/luyulaile/archive/2010/12/19/136937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA获取随机数</title><link>http://www.cppblog.com/luyulaile/archive/2010/12/19/136893.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sat, 18 Dec 2010 16:56:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2010/12/19/136893.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/136893.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2010/12/19/136893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/136893.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/136893.html</trackback:ping><description><![CDATA[<p>本文来自CSDN博客<a href="http://blog.csdn.net/pointbin/archive/2006/01/12/576957.aspx">http://blog.csdn.net/pointbin/archive/2006/01/12/576957.aspx</a></p>
<p>&nbsp;<br>在java.lang.Math中有个Math.random()方法，它可以产生0-1之间（包括0但不包括1）的任意小数<br><br><br>在Java中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数，分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子，Random(long seed)使用指定的seed作为发生器的种子。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 随机数发生器(Random)对象产生以后，通过调用不同的method：nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;生成随机数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random(100);//指定种子数100<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; random调用不同的方法，获得随机数。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果2个Random对象使用相同的种子（比如都是100），并且以相同的顺序调用相同的函数，那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random1 = new Random(100);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextInt());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextFloat());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random1.nextBoolean());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random2 = new Random(100);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextInt());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextFloat());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(random2.nextBoolean());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;指定范围内的随机数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 随机数控制在某个范围内,使用模数运算符%<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; 10;i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Math.abs(random.nextInt())%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;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获得的随机数有正有负的，用Math.abs使获取数据范围为非负数</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;获取指定范围内的不重复随机数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.*;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class TestRandom {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] intRet = new int[6]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int intRd = 0; //存放随机数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0; //记录生成的随机数个数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int flag = 0; //是否已经生成过标志<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(count&lt;6){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random rdm = new Random(System.currentTimeMillis());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intRd = Math.abs(rdm.nextInt())%32+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;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;count;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(intRet[i]==intRd){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag = 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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag = 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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(flag==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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intRet[count] = intRd;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int t=0;t&lt;6;t++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(t+"-&gt;"+intRet[t]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/136893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2010-12-19 00:56 <a href="http://www.cppblog.com/luyulaile/archive/2010/12/19/136893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1097   System overload  约瑟芬问题 简单题</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/23/90881.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Wed, 22 Jul 2009 23:23:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/23/90881.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/90881.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/23/90881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/90881.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/90881.html</trackback:ping><description><![CDATA[<p>题意好理解，时间上提高不了，测试数据很少可以交表</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_072150 onclick="this.style.display='none'; Code_Closed_Text_072150.style.display='none'; Code_Open_Image_072150.style.display='inline'; Code_Open_Text_072150.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_072150 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_072150.style.display='none'; Code_Closed_Image_072150.style.display='inline'; Code_Closed_Text_072150.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_072150 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">点+展开</span><span id=Code_Open_Text_072150 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">freopen("s.txt","r",stdin);<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">freopen("key.txt","w",stdout);</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,i,length,k,cursor,cycle,left;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">length,length)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;mark[</span><span style="COLOR: #000000">151</span><span style="COLOR: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cycle</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&#179;&#162;&#202;&#212;&#178;&#189;&#179;&#164;&#206;&#170;i;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&#214;&#184;&#207;&#242;&#206;&#187;&#214;&#195;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(mark,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(mark));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">length</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(left</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<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;left</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(k</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cycle)<br>&nbsp;&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;&nbsp;cursor</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(cursor</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">(length);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(mark[cursor]</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(cursor</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[cursor]</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(left</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">system("PAUSE");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br></span></span></div>
<img src ="http://www.cppblog.com/luyulaile/aggbug/90881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-23 07:23 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/23/90881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c/c++输入输出全归纳</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/21/90735.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Tue, 21 Jul 2009 07:18:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/21/90735.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/90735.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/21/90735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/90735.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/90735.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">今天看完一篇牛人博文，受益匪浅，小记一下。原文更详细<a href="http://blog.csdn.net/lewsn2008/archive/2008/04/16/2295790.aspx">http://blog.csdn.net/lewsn2008/archive/2008/04/16/2295790.aspx</a><br>首先我们呢看一下输入操作的原理， 程序的输入都建有一个缓冲区，即输入缓冲区。一次输入过程是这样的，当一次键盘输入结束时会将输入的数据存入输入缓冲区，而cin等输入输出函数直接从输入缓冲区中取数据。正因为cin等输入输出函数是直接从缓冲区取数据的，所以有时候当缓冲区中有残留数据时，cin函数会直接取得这些残留数据而不会请求键盘输入。<br>---------------</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">1，要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">读取字符时：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">scanf()以Space空格、Enter、Tab结束一次输入，不会舍弃最后的回车符（即回车符会残留在缓冲区中），（区别读字符串时会清楚）//所以可以用getchar()清除；</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">getchar()以Enter结束输入，也不会舍弃最后的回车符；</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">读取字符串时：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">scanf()以Space、Enter、Tab结束一次输入，会舍弃最后的回车符（区别读字符时）和所有的空格等等。<o:p></o:p></p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">gets()以Enter结束输入（空格不结束），接受空格，会舍弃最后的回车符！</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">第二：为了避免出现上述问题，必须要清空缓冲区的残留数据，可以用以下的方法解决：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">方法1：C语言里提供了函数清空缓冲区，只要在读数据之前先清空缓冲区就没问题了！<o:p></o:p></p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个函数是fflush(stdin)。</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">方法2：自己取出缓冲区里的残留数据。</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%[^\n]",string);</p>
-------------------------<br>cin的学问<br>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">一. cin&lt;&lt;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">该操作符是根据后面变量的类型读取数据。</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">输入结束条件&nbsp;&nbsp; ：遇到Enter、Space、Tab键。(这个很重要！)</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">对结束符的处理 ：清楚缓冲区中使得输入结束的结束符(Enter、Space、Tab)</p>
(这里有一点问题，<br>int i;<br>char c[100];<br>cin&gt;&gt;i;<br>cin.getline(str,100);<br>cout&lt;&lt;str;<br>如果输入是：12&nbsp;&nbsp;&nbsp;&nbsp; adjf回车<br>输出将先是空格然后adjf；<br>如果输入是：12回车adjf回车<br>输出将是adjf.<br>看来cin&gt;&gt;要在连用时，比如cin&gt;&gt;a&gt;&gt;b;或者cin&gt;&gt;a;cin&gt;&gt;b消除空格能力才体现。<br>)<br>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">二．cin.get()</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">该函数有三种格式：无参，一参数，二参数</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">即cin.get(),&nbsp; cin.get(char ch),&nbsp; cin.get(array_name, Arsize)</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （i）读取字符的情况：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">输入结束条件：Enter键（遇空格不结束）</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">对结束符处理：不丢弃缓冲区中的Enter</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">cin.get() 与 cin.get(char ch)用于读取字符，他们的使用是相似的，</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">即：ch=cin.get() 与 cin.get(ch)是等价的。<br></p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">测试程序：<br>#include &lt;iostream&gt;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">using namespace std;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">int main()</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">{</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char c1, c2;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin.get(c1);</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin.get(c2);</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;c1&lt;&lt;" "&lt;&lt;c2&lt;&lt;endl;&nbsp;&nbsp; // 打印两个字符</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;(int)c1&lt;&lt;" "&lt;&lt;(int)c2&lt;&lt;endl; // 打印这两个字符的ASCII值</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0; </p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">}</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">测试一输入：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">a[Enter]</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">输出:</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">a</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">97 10</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">【分析】会发现只执行了一次从键盘输入，显然第一个字符变量取的'a', 第二个变量取的是Enter(ASCII值为10)，这是因为该函数不丢弃上次输入结束时的Enter字符，所以第一次输入结束时缓冲区中残留的是上次输入结束时的Enter字符！</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">&nbsp;</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">测试二输入：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">a b[Enter]</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">输出：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">a </p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">97 32</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">【分析】显然第一个字符变量取的'a', 第二个变量取的是Space(ASCII值为32)。原因同上，没有丢弃Space字符。</p>
<p style="FONT-SIZE: 18pt; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （ii）读取字符串的情况：</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">cin.get(array_name, Arsize)是用来读取字符串的，可以接受空格字符，遇到Enter结束输入，按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。</p>
<span style="FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 18pt">（i i i）cin.getline()</span></span>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">cin.getline() 与 cin.get(array_name, Arsize)的读取方式差不多，以Enter结束，可以接受空格字符。按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。</p>
<p style="FONT-SIZE: 14pt; FONT-FAMILY: Verdana">但是这两个函数是有区别的：</p>
cin.get(array_name, Arsize)<br><span style="COLOR: #ff0000">当输入的字符串超长时，不会引起cin函数的错误，后面的cin操作会继续执行，只是直接从缓冲区中取数据。但是cin.getline()<br><br>当输入超长时，会引起cin函数的错误，后面的cin操作将不再执行。（具体原因将在下一部分"cin的错误处理"中详细介绍）<br></span><br>------------<br>cin的错误处理<br><br>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序执行时有一个标志变量来标志输入的异常状态，其中有三位标志位分别用来标志三种异常信息，他们分别是：</span><span lang=EN-US>failbit</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>eofbit</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US>badbit</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这三个标志位在标志变量中是这样分配的：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>____________________________________</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>|<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>2<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>|<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>|<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>0<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>|</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>|<span style="mso-spacerun: yes">&nbsp; </span>failbit<span style="mso-spacerun: yes">&nbsp; </span>|<span style="mso-spacerun: yes">&nbsp; </span>eofbit<span style="mso-spacerun: yes">&nbsp; </span>|<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>badbit<span style="mso-spacerun: yes">&nbsp; </span>|</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>|___________|__________|___________|</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看一下这几个标志位的作用</span><span lang=EN-US>(</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引用</span><span lang=EN-US>msdn)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>badbit, to record a loss of integrity of the stream buffer.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>eofbit, to record end-of-file while extracting from a stream.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>failbit, to record a failure to extract a valid field from a stream.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>In addition, a useful value is goodbit, where no bits are set.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来我么看几个</span><span lang=EN-US>ios</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类的数据定义</span><span lang=EN-US>(</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引用</span><span lang=EN-US>msdn)</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>typedef T2 iostate; </span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>static const iostate badbit, eofbit, failbit, goodbit;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里</span><span lang=EN-US>ios</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类定义了这四个常量</span><span lang=EN-US>badbit, eofbit, failbit, goodbit</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其实这四个标志常量就是取对应标志位的掩码，也即输入的四种异常情况！</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以上四个常量对应的取值为：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>ios::badbit<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>001<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入（输出）流出现致命错误，不可挽回</span><span lang=EN-US><span style="mso-spacerun: yes">&nbsp; </span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>ios::eofbit<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>010<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经到达文件尾</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>ios::failbit<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>100<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入（输出）流出现非致命错误，可挽回</span><span lang=EN-US> </span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>ios::goodbit<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>000<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流状态完全正常</span><span lang=EN-US>, </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">各异常标志位都为</span><span lang=EN-US>0</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt">如果出现输入错误，则cin不再工作，我们可以用cin.clear()重置标记位。<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><br>测试程序</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>#include &lt;iostream&gt;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>using namespace std;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>int main ()</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>{</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>char ch, str[20];</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cin.getline(str, 5);</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cout&lt;&lt;"flag1:"&lt;&lt;cin.good()&lt;&lt;endl;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查看</span><span lang=EN-US>goodbit</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">状态，即是否有异常</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cin.clear();<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">清除错误标志</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cout&lt;&lt;"flag1:"&lt;&lt;cin.good()&lt;&lt;endl;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>// </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">清除标志后再查看异常状态</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cin&gt;&gt;ch; </span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cout&lt;&lt;"str:"&lt;&lt;str&lt;&lt;endl;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>cout&lt;&lt;"ch :"&lt;&lt;ch&lt;&lt;endl;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span>return 0;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>}</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">测试输入：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>12345[Enter]</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出：</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>flag1:0<span style="mso-spacerun: yes">&nbsp; </span>// good()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回</span><span lang=EN-US>false</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明有异常</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>flag2:1<span style="mso-spacerun: yes">&nbsp; </span>// good()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">返回</span><span lang=EN-US>true</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明，</span><span lang=EN-US>clear()</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经清除了错误标志</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>str:1234</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>ch :5</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><br>但是当前一次读取数据出错后，如果缓冲区没有清空的话，重置错误标志还不够！要是能将缓冲区的残留数据清空了就好了哦！下面我们再来看一个很重要的函数！cin.ignore()<br></span></p>
<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">这个函数用来丢弃输入缓冲区中的字符，第一参数定义一个数，第二个参数定义一个字符变量。</span><br>例：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">cin.ignore(5, 'a'); </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">函数将不断从缓冲区中取一个字符丢弃，直到丢弃的字符数达到</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">5</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">或者读取的字符为</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">'a'</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">。</span><br>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实该函数最常用的方式是这样的，将第一个参数设的非常大，将第二个参数设为</span><span lang=EN-US>'\n'</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这样就可以缓冲区中回车符中的所有残留数据，因为一般情况下前面输入残留的数据是没有用的，所以在进行新一次输入操作前将缓冲区中所有数据清空是比较合理。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如：</span><span lang=EN-US>cin.ignore(1024, '\n'); </span></p>
<br>------ 
<img src ="http://www.cppblog.com/luyulaile/aggbug/90735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-21 15:18 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/21/90735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1946 compound words</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/19/90489.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sun, 19 Jul 2009 02:09:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/19/90489.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/90489.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/19/90489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/90489.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/90489.html</trackback:ping><description><![CDATA[<pre>Sample Input</pre>
<pre>a
alien
born
less
lien
never
nevertheless
new
newborn
the
zebra</pre>
<h3>Sample Output</h3>
<pre>alien
newborn
输入是字典序的，题意就是讲一个单词分成两半，且两半都出现在输入中，则将此单词输出。下面的代码是对每一个单词尝试所有的分拆方法，一个个去寻找是否拆成的两</pre>
<pre>个是否都存在，如果两个字串都存在，则输出，同时跳出循环（否则可能重复输出）。</pre>
<pre>其实有更高效的方法，就是到每个单词前面寻找是否有他的字串（比如newborn 前面有new,neverthelsess 前面有never），有的话，再找后半部分是否在输入中。</pre>
<pre>----</pre>
<pre>获取子串的方法。 string &nbsp; B &nbsp; = &nbsp; A.substr(start,length); &nbsp; <br>&nbsp; start为子串在A中的开始位置. &nbsp; <br>&nbsp; length为子串的长度</pre>
<pre>例子 &nbsp; <br>&nbsp; void &nbsp; main() &nbsp; <br>&nbsp; { &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; st="ifn",b; &nbsp; <br>&nbsp; b=st.substr(0,2); &nbsp; <br>&nbsp; cout&lt;&lt;b; &nbsp; <br>&nbsp; } &nbsp; <br>&nbsp; 结果 &nbsp; if</pre>
<pre>----</pre>
<pre>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_100352 onclick="this.style.display='none'; Code_Closed_Text_100352.style.display='none'; Code_Open_Image_100352.style.display='inline'; Code_Open_Text_100352.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_100352 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_100352.style.display='none'; Code_Closed_Image_100352.style.display='inline'; Code_Closed_Text_100352.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_100352 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">点此代码</span><span id=Code_Open_Text_100352 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;&nbsp;a[</span><span style="COLOR: #000000">120000</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;bsearch(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;begin</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;end</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(begin</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">end)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(begin</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">end)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(a[mid]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">s)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(a[mid]</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">s)<br>&nbsp;&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;&nbsp;end</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">mid</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&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;&nbsp;begin</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;b;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j,k;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">b)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">b;<br>&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">a[j].size();k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;tem(a[j],</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,k);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;temp(a[j],k,a[j].size());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(bsearch(temp,i)</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">bsearch(tem,i))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a[j]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">system("PAUSE");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br></span></span></div>
</pre>
<img src ="http://www.cppblog.com/luyulaile/aggbug/90489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-19 10:09 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/19/90489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取行输入，一行一个字符串</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/18/90435.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Sat, 18 Jul 2009 08:11:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/18/90435.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/90435.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/18/90435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/90435.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/90435.html</trackback:ping><description><![CDATA[<a href="http://acm.jlu.edu.cn/joj/problemstatus.php?pid=2152"><u><font color=#0000ff>2152</font></u></a>: A Special Sorting
<hr>
<table cellSpacing=3 cellPadding=3 width="75%" border=1>
    <colgroup style="COLOR: red; TEXT-ALIGN: center" span=7>
    <tbody>
        <tr>
            <th height=40>Status</th>
            <th>In/Out</th>
            <th>TIME Limit</th>
            <th>MEMORY Limit</th>
            <th>Submit Times</th>
            <th>Solved Users</th>
            <th>JUDGE TYPE</th>
        </tr>
        <tr>
            <td align=middle height=40><span id=probinfo_placeholder><img height=20 src="http://acm.jlu.edu.cn/joj/images/ok1.gif" width=20></span></td>
            <td>stdin/stdout</td>
            <td>3s</td>
            <td>8192K</td>
            <td>356</td>
            <td>152</td>
            <td>Standard</td>
        </tr>
    </tbody>
</table>
<div class=prob_text>
<p>Give you a sequence of words, can you sort them in dictionary order?
<p>eg.
<pre>yes
accidental
baby
accept
accident
</pre>
In dictionary order, those words should be printed as the following
<pre>accept
accident
accidental
baby
yes
</pre>
But we will make an interesting rule this time. See your keyboard or the picture below:
<p align=center><img src="http://acm.jlu.edu.cn/joj/images/problems/2152.jpg"></img></p>
there are ONLY 26 letters in lower-case we will use, and we assume that the letter above is bigger than the letter below, and the left is bigger than the right. For example, 'q' is bigger than 'a', 'c' is bigger than 'v'. So the example at the beginning whill be...
<h3>Input and Output</h3>
the input will only contain a sequence of words which is less than 1500. the output should print the sorted words each in a single line.
<h3>Sample Input</h3>
<pre>yes
accidental
baby
accept
accident
</pre>
<h3>Sample Output</h3>
<pre>baby
accident
accidental
accept
yes
</pre>
</div>
<br>水题啊！<br>#include&lt;iostream&gt;<br>#include&lt;cstdlib&gt;<br>#include&lt;string&gt;<br>#include&lt;algorithm&gt;<br>using namespace std;<br>int Map[27];<br>struct M{<br>&nbsp;char s[30];<br>}S[1500];<br>char table[26]={'q','w','e','r','t','y','u','i','o','p','a','s','d',<br>'f','g','h','j','k','l','z','x','c','v','b','n','m'};<br>bool operator&lt;(M a,M b)<br>{<br>&nbsp;int i=strlen(a.s);<br>&nbsp;int j=strlen(b.s);<br>&nbsp;if(i&lt;j)<br>&nbsp;j=i;<br>&nbsp;for(int k=0;k&lt;j;k++)<br>&nbsp;{<br>&nbsp;&nbsp;if(Map[(a.s[k])-'a']&lt;Map[(b.s)[k]-'a'])<br>&nbsp;&nbsp;return false;<br>&nbsp;&nbsp;if(Map[(a.s[k])-'a']&gt;Map[(b.s)[k]-'a'])<br>&nbsp;&nbsp;return true;<br>&nbsp;}<br>&nbsp;return i==j;//&#200;&#231;&#185;&#251;abcd,abc,abcd&lt;abc <br>}<br>void search(char key)<br>{<br>&nbsp;int i; <br>for(i=0;i&lt;26;i++)<br>{<br>&nbsp;if(key==table[i]) <br>&nbsp;{<br>&nbsp;&nbsp;Map[key-'a']=i; <br>&nbsp;&nbsp;break;<br>&nbsp;}<br>}<br>}<br>&nbsp; int main()<br>&nbsp; {<br>&nbsp; freopen("s.txt","r",stdin);&nbsp;&nbsp;<br>&nbsp; freopen("key.txt","w",stdout);<br>&nbsp; int i;<br>&nbsp; string t;<br>&nbsp; memset(S,0,sizeof(S));<br>&nbsp; for(i=0;i&lt;26;i++)<br>&nbsp; {<br>&nbsp;&nbsp;search('a'+i);<br>&nbsp; }<br>&nbsp; i=0;<br>&nbsp; while(!cin.eof())<br>&nbsp;&nbsp; {&nbsp;<br>&nbsp;cin.getline(S[i++].s,30);//不能用cin&gt;&gt;s;否则runtime&nbsp; error<br>&nbsp;&nbsp; }<br>&nbsp;sort(S,S+i-1);<br>&nbsp;for(int j=0;j&lt;i-1;j++)//必须用i-1,最后还有个空行。<br>&nbsp;cout&lt;&lt;S[j].s&lt;&lt;endl;<br>&nbsp; //system("PAUSE");<br>&nbsp; return&nbsp;&nbsp; 0;<br>&nbsp; }<br>奇怪的是在vc上能用<br>string s ;<br>while(cin&gt;&gt;s)<br>{};<br>在dev c++ 上不行。 <br>后来才发现可以<br>string s ;<br>while(cin&gt;&gt;s)<br>{};<br>但是不能加 memset(S,0,sizeof(S));<br>
<img src ="http://www.cppblog.com/luyulaile/aggbug/90435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-18 16:11 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/18/90435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1253 Magic Numbers 不难，但是可以做做</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/17/90393.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Fri, 17 Jul 2009 15:21:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/17/90393.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/90393.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/17/90393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/90393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/90393.html</trackback:ping><description><![CDATA[<p>可以用long long，可以不用高精度算法（大整数乘法）。<br>从1开始遍历到9999999999/n;因为最多只有10位。相乘之积也应当小于9999999999.</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">9999999999.0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;&nbsp;m,temp;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">m)<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">m;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">判断</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
<img src ="http://www.cppblog.com/luyulaile/aggbug/90393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-17 23:21 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/17/90393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1199 求n!最右边一位非零数</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/08/89533.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Wed, 08 Jul 2009 02:45:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/08/89533.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/89533.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/08/89533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/89533.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/89533.html</trackback:ping><description><![CDATA[<p>求模的思想<br>#include&lt;iostream&gt;<br>#include&lt;cstdlib&gt;<br>#include&lt;iomanip&gt;<br>using namespace std;</p>
<p>&nbsp; int main()<br>&nbsp; {<br>&nbsp; //freopen("s.txt","r",stdin);<br>&nbsp; //freopen("key.txt","w",stdout);<br>&nbsp; int n;<br>&nbsp; int temp;<br>&nbsp; while(cin&gt;&gt;n)<br>&nbsp; {<br>&nbsp;&nbsp;cout&lt;&lt;setw(5)&lt;&lt;n&lt;&lt;" -&gt; " ;<br>&nbsp;&nbsp;temp=1;<br>&nbsp;&nbsp;for(int j=1;j&lt;=n;j++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;int i=j;<br>&nbsp;&nbsp;&nbsp;while(i%10==0)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;i/=10;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;while(i%5==0)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;i/=5;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp/=2;<br>&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;temp*=i;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;//&#188;&#198;&#203;&#227;&#196;&#169;&#206;&#187;<br>&nbsp;&nbsp;&nbsp;temp%=100000;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;while(temp%10==0)<br>&nbsp;&nbsp;temp/=10;<br>&nbsp;&nbsp;temp%=10;<br>&nbsp;&nbsp;cout&lt;&lt;temp&lt;&lt;endl;<br>&nbsp; }</p>
<p>&nbsp; //system("PAUSE");<br>&nbsp; return&nbsp;&nbsp; 0;<br>&nbsp; }<br>一种是分类的思想</p>
<p>#include &lt;iostream&gt;<br>#include &lt;iomanip&gt;<br>using namespace std;</p>
<p>int main()<br>{<br>&nbsp;long a[10001]={0,1,2,6,4,2},b[5]={0,2,4,8,6},i,m,n;<br>&nbsp;for(i=6;i&lt;=10000;i++)<br>&nbsp;{<br>&nbsp; m=i%5;<br>&nbsp; n=i/5;<br>&nbsp; if(m!=0)<br>&nbsp;&nbsp; a[i]=a[i-1]*i%10;<br>&nbsp; else<br>&nbsp;&nbsp; a[i]=b[(n-1)%4+1]*a[n]%10;<br>&nbsp;}<br>&nbsp;while(cin&gt;&gt;n)<br>&nbsp; cout&lt;&lt;setw(5)&lt;&lt;n&lt;&lt;" -&gt; "&lt;&lt;a[n]&lt;&lt;endl;<br>&nbsp;return 0;<br>}<br></p>
<img src ="http://www.cppblog.com/luyulaile/aggbug/89533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-08 10:45 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/08/89533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj  1125 spell checker字符串处理 map</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/06/89395.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Mon, 06 Jul 2009 12:13:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/06/89395.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/89395.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/06/89395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/89395.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/89395.html</trackback:ping><description><![CDATA[Spell Checker
<hr>
<table cellSpacing=3 cellPadding=3 width="75%" border=1>
    <colgroup style="COLOR: red; TEXT-ALIGN: center" span=7>
    <tbody>
        <tr>
            <th height=40>Status</th>
            <th>In/Out</th>
            <th>TIME Limit</th>
            <th>MEMORY Limit</th>
            <th>Submit Times</th>
            <th>Solved Users</th>
            <th>JUDGE TYPE</th>
        </tr>
        <tr>
            <td align=middle height=40><span id=probinfo_placeholder><img height=20 src="http://acm.jlu.edu.cn/joj/images/ok1.gif" width=20></span></td>
            <td>stdin/stdout</td>
            <td>3s</td>
            <td>8192K</td>
            <td>135</td>
            <td>46</td>
            <td>Standard</td>
        </tr>
    </tbody>
</table>
<div class=prob_text>
<p>You, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given words using a known dictionary of all correct words in all their forms.<br><br>If the word is absent in the dictionary then it can be replaced by correct words (from the dictionary) that can be obtained by one of the following operations:</p>
<ul>
    <li>deleting of one letter from the word;
    <li>replacing of one letter in the word with an arbitrary letter;
    <li>inserting of one arbitrary letter into the word. </li>
</ul>
<p>Your task is to write the program that will find all possible replacements from the dictionary for every given word.
<h3>Input</h3>
This problem consists of several test cases, each of which is described below:
<p>The first part of each test case contains all words from the dictionary. Each word occupies its own line. This part is finished by the single character '#' on a separate line. All words are different. There will be at most 10000 words in the dictionary.<br><br>The next part of the test case contains all words that are to be checked. Each word occupies its own line. This part is also finished by the single character '#' on a separate line. There will be at most 50 words that are to be checked.<br><br>All words in the input (words from the dictionary and words to be checked) consist only of small alphabetic characters and each one contains 15 characters at most.<br><br>The first line of the input contains an integer N, which is the number of test cases in the input, followed by N test cases described above.
<h3>Output</h3>
For each test case, first write to the output 'Scenario #k:', where k is the number of test case of input. Then on the next line write to the output exactly one line for every checked word in the order of their appearance in the second part of the test case. If the word is correct (i.e. it exists in the dictionary) write the message: "&lt;checked word&gt; is correct". If the word is not correct then write this word first, then write the character ':' (colon), and after a single space write all its possible replacements, separated by spaces. The replacements should be written in the order of their appearance in the dictionary (in the first part of the input file). If there are no replacements for this word then the line feed should immediately follow the colon.<br><br>Print a blank line after each test case.
<h3>Sample Input</h3>
<pre>1
i
is
has
have
be
my
more
contest
me
too
if
award
#
me
aware
m
contest
hav
oo
or
i
fi
mre
#
</pre>
<h3>Sample Output</h3>
<pre>Scenario #1:
me is correct
aware: award
m: i my me
contest is correct
hav: has have
oo: too
or:
i is correct
fi: i
mre: more me
</pre>
</div>
<br>启发：map用于查找字符串还是很爽的。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">math.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br>map&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;ans;<br></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;solve(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">s,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">key)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">strlen(s);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">strlen(key);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(abs(i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">j</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">比字典中多一个&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">j</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">num</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&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;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s[k</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">num]</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">key[k])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(num</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">比字典中少一个&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">num</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&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;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s[k]</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">key[k</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">num])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(num</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">num</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&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;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s[k]</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">key[k])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(num</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">s.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdin);<br>&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">key.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdout);<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num,casetime</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j,k;<br>&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">num;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;s[</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(num</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;casetime</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Scenario&nbsp;#</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">casetime</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans.clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">str[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(str[i][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[str[i]]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">s);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(s[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ans[s]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;<br>&nbsp;&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;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">s</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;is&nbsp;correct</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&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;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">s</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&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;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(solve(s,str[j]))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">str[j];<br>&nbsp;&nbsp;&nbsp;&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;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">system("PAUSE");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br></span></div>
<img src ="http://www.cppblog.com/luyulaile/aggbug/89395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-06 20:13 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/06/89395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1274 Pig Latin 字符串处理</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/03/89183.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Fri, 03 Jul 2009 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/03/89183.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/89183.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/03/89183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/89183.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/89183.html</trackback:ping><description><![CDATA[<div class=prob_text>
<p>You have decided that PGP encryptation is not strong enough for your email. You have decided to supplement it by first converting your clear text letter into Pig Latin before encrypting it with PGP.
<h3>Input and Output</h3>
<p>You are to write a program that will take in an arbitrary number of lines of text and output it in Pig Latin. Each line of text will contain one or more words. A ``word'' is defined as a consecutive sequence of letters (upper and/or lower case). Words should be converted to Pig Latin according to the following rules (non-words should be output exactly as they appear in the input):
<ol>
    <li>Words that begin with a vowel (<tt>a</tt>, <tt>e</tt>, <tt>i</tt>, <tt>o</tt>, or <tt>u</tt>, and the capital versions of these) should just have the string ``<tt>ay</tt>'' (not including the quotes) appended to it. For example, ``<tt>apple</tt>'' becomes ``<tt>appleay</tt>''.
    <li>Words that begin with a consonant (any letter than is not <tt>A</tt>, <tt>a</tt>, <tt>E</tt>, <tt>e</tt>, <tt>I</tt>, <tt>i</tt>, <tt>O</tt>, <tt>o</tt>, <tt>U</tt> or <tt>u</tt>) should have the first consonant removed and appended to the end of the word, and then appending ``<tt>ay</tt>'' as well. For example, ``<tt>hello</tt>'' becomes ``<tt>ellohay</tt>''.
    <li>Do not change the case of any letter. </li>
</ol>
<h3>Sample Input</h3>
<p>
<pre>This is the input.</pre>
<h3>Sample Output</h3>
<p>
<pre>hisTay isay hetay inputay.</pre>
<p>&nbsp;</p>
</div>
<br>虽然题目难度不是很大，但是对我启发挺大，碰到这种字符串处理的题，最好就是统一模式，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a=getchar():<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(flag)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while()//判断是否符合条件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((a=getchar())==EOF)//获取a=getchar()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag=0;//判断文件是否结束<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp; while()//判断是否符合条件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((a=getchar())==EOF)//获取a=getchar()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag=0;//判断文件是否结束<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; }<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>&nbsp;&nbsp;{<br>&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;freopen("s.txt","r",stdin);<br>&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;freopen("key.txt","w",stdout);</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;a;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;flag</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,e</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,mark;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;temp;<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;mar;<br>&nbsp;&nbsp;a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getchar();<br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">((a</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ay</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(flag</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>&nbsp;&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;&nbsp;&nbsp;flag</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">E</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">e</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">I</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">O</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">o</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">U</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">u</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mar</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<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;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getchar())</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">EOF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(mark</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<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;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">mar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">))<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;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getchar())</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">EOF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">system("PAUSE");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;}<br></span></div>
<img src ="http://www.cppblog.com/luyulaile/aggbug/89183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-03 18:04 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/03/89183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 2197 perfect set 序偶对称</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/03/89171.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Fri, 03 Jul 2009 08:43:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/03/89171.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/89171.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/03/89171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/89171.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/89171.html</trackback:ping><description><![CDATA[<div class=prob_text>A perfect point set is a set of points, for every point (x,y) in this set, point (y,x) is also in this set.
<h3>Input</h3>
There are mutical cases for this problem. For every input case, there is a set. we give you the number of points in this set in the first line, followed by n lines,each give two integers x y.
<h3>Output</h3>
If this set is a perfect set, you should print "Yes", else you print "No".
<h3>Sample Input</h3>
<pre>4
1 4
4 1
2 5
5 2
</pre>
<h3>Sample Output</h3>
<pre>Yes</pre>
<pre>1，这种类似稀疏矩阵的数组对一般不用数组存储，用结构体比较好</pre>
<pre>2，排序后比较非常的巧妙。</pre>
<pre>#include&lt;iostream&gt;
#include&lt;cstdlib&gt;
using namespace std;
struct mm{
double a;
double b;}M[100000];
bool  operator&lt;(mm m1,mm m2)
{
if(m1.a&lt;m2.a)
return true;
else
{
if(m1.a==m2.a&amp;&amp;m1.b&lt;m2.b)
return true;
}
return false;
}
int main()
{
// freopen("s.txt","r",stdin);
// freopen("key.txt","w",stdout);
int num;
double a,b;
int temp=0;
while(cin&gt;&gt;num)
{
memset(M,0,sizeof(M));
temp=0;
for(int k=0;k&lt;num;k++)
{
cin&gt;&gt;a&gt;&gt;b;
if(a&lt;b)
{
M[temp].a=a;
M[temp].b=b;
temp++;
}
else if(a&gt;b)//把a和b相等的都去掉了
{
M[temp].a=b;
M[temp].b=a;
temp++;
}
}
if(temp%2!=0)cout&lt;&lt;"No"&lt;&lt;endl;
else
{
sort(M,M+temp);
int flag=0;
for(int p=0;p&lt;temp;p+=2)
{
if(M[p].b!=M[p+1].b||M[p].a!=M[p+1].a)
{
flag=1;break;
}
}
if(flag==0)
cout&lt;&lt;"Yes"&lt;&lt;endl;
else
cout&lt;&lt;"No"&lt;&lt;endl;
}
}
//system("PAUSE");
return   0;
}
</pre>
</div>
<img src ="http://www.cppblog.com/luyulaile/aggbug/89171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-03 16:43 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/03/89171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>joj 1157 Station Balance 水</title><link>http://www.cppblog.com/luyulaile/archive/2009/07/01/88970.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Wed, 01 Jul 2009 02:54:00 GMT</pubDate><guid>http://www.cppblog.com/luyulaile/archive/2009/07/01/88970.html</guid><wfw:comment>http://www.cppblog.com/luyulaile/comments/88970.html</wfw:comment><comments>http://www.cppblog.com/luyulaile/archive/2009/07/01/88970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/luyulaile/comments/commentRss/88970.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/luyulaile/services/trackbacks/88970.html</trackback:ping><description><![CDATA[#include&lt;iostream&gt;<br>#include&lt;cstdlib&gt;<br>#include&lt;iomanip&gt;<br>#include&lt;algorithm&gt; <br>#include&lt;math.h&gt;<br>using namespace std;<br><br>&nbsp; int main()<br>&nbsp; {<br>//freopen("s.txt","r",stdin);<br>// freopen("key.txt","w",stdout);<br>&nbsp; int n,m;<br>&nbsp; int a[12];<br>&nbsp; int time=0;<br>&nbsp; while(cin&gt;&gt;n&gt;&gt;m)<br>&nbsp; {<br>int i,j;<br>double k;<br>memset(a,0,sizeof(a));<br>time++;<br>double sum=0.0;<br>double temp=0.0;<br>for(i=0;i&lt;m;i++)<br>{<br>cin&gt;&gt;a[i];<br>sum+=a[i];<br>}<br>sum/=n;<br>sort(a,a+2*n);//????a[0]????a[2n-1] <br>for(j=0;j&lt;n;j++)<br>{<br>k=a[j]+a[2*n-j-1]-sum;<br>if(k&gt;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp+=k;<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp; temp-=k;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Set #"&lt;&lt;time&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"IMBALANCE = "&lt;&lt;fixed&lt;&lt;setprecision(5)&lt;&lt;temp&lt;&lt;endl&lt;&lt;endl;<br>&nbsp; }<br><br>&nbsp; //system("PAUSE");<br>&nbsp; return&nbsp;&nbsp; 0;<br>&nbsp; }<br>1，设计到减法注意是否是double类型<br>2，要不要绝对值，abs(),include&lt;math.h&gt;<br>3,cout&lt;&lt;fixed&lt;&lt;setprecision(5)能保障小数点后有（5）几位小数 
<img src ="http://www.cppblog.com/luyulaile/aggbug/88970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luyulaile/" target="_blank">luis</a> 2009-07-01 10:54 <a href="http://www.cppblog.com/luyulaile/archive/2009/07/01/88970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>