<P>using namespace std;</P>
<P>int main()<BR>{<BR> cout <<"Enter a number : ";<BR> int number;<BR> cin >>number;<BR> int total = number * number;<BR> int i = 0;<BR> int j = 0;<BR> //(1):<BR> for (i = 0 ; i < number ; ++i)<BR> {<BR> for (j = 0 ; j < number ; ++j)<BR> {<BR> cout <<setw(5)<<total;<BR> total -= 1;<BR> }<BR> cout <<endl;<BR> }<BR> cout <<endl;</P>
<P> //(2)<BR> i = 0;<BR> j = 0;<BR> int num = 1;<BR> vector< vector<int> > a;<BR> a.resize(number);<BR> for (int x = 0; x < number; ++x)<BR> a[x].resize(number);<BR> while(num <= number * number)<BR> {<BR> if(i == 0 || j == number)<BR> {<BR> if(j == number){<BR> i+=1;<BR> j--;<BR> }<BR> for(; j >= 0 && i != number; --j){<BR> a[i][j] = num;<BR> num++;<BR> i++;<BR> }<BR> ++j;<BR> }<BR> else if (j == 0 || i == number)<BR> {<BR> if (i == number){<BR> j+=1;<BR> i--;<BR> }<BR> for(; i >= 0 && j != number; --i){<BR> a[i][j] = num;<BR> num++;<BR> j++;<BR> }<BR> ++i;<BR> }<BR> <BR> }<BR> for ( i = 0 ; i < number ; ++i)<BR> {<BR> for (int j = 0 ; j < number ; ++j)<BR> cout <<setw(5)<<a[i][j];<BR> cout <<endl;<BR> }<BR> cout <<endl;</P> <P>//(3)<BR> i = 0;<BR> j = 0;<BR> num = 0;<BR> vector< vector<int> > b;<BR> b.resize(number);<BR> for (int y = 0; y < number; ++y)<BR> b[y].resize(number);<BR> int temp1 = 0;<BR> int temp2 = number - 1;<BR> for (int t = 0; t <= number/2; t++, temp1++,temp2--,++i,++j) <BR> {<BR> for(i = temp1; i < temp2; i++)<BR> b[i][j] = ++num;<BR> for(j = temp1; j < temp2; j++)<BR> b[i][j] = ++num;<BR> for(i = temp2; i > temp1; i--)<BR> b[i][j] = ++num;<BR> for(j = temp2; j > temp1; j--)<BR> b[i][j] = ++num;<BR> if(temp1 == temp2)<BR> b[temp1][temp2] = ++num;<BR> }</P>
<P> for ( i = 0 ; i < number ; ++i)<BR> {<BR> for (int j = 0 ; j < number ; ++j)<BR> cout <<setw(5)<<b[i][j];<BR> cout <<endl;<BR> }<BR> cout <<endl;<BR> return 0;<BR>}<BR></P> 16题应该可以用二分法吧!<BR><BR> <DIV class=quote><B>以下是引用<U>aipb2007</U>在2007-6-17 11:19:51的发言:</B><BR>大家讨论下16题最少称几次啊?<BR>------------------------------------------------------------------<BR><BR>16. 设有8枚硬币a,b,c,d,e,f,g,h,其中有一枚硬币是伪造的。<BR>真伪硬币的区别仅是重量不同,可能重,可能轻。今要求以天平为工具,用最少的<BR>比较次数挑出伪造硬币,并鉴定它是重还是轻。<BR><BR>------------------------------------------------------------------<BR>我用4次似乎多了!</DIV>
<P>3次就够了吧<BR><BR>第一次 a,b,c 对 d,e,f 若平衡……(简单)<BR><BR>若不平衡(如果左边重)(如果右边重同样道理,因为题目是对称的)<BR><BR>第二次 b,c,d对e,f,g <BR><BR>若平衡 则a偏重,问题解决<BR><BR>若不平衡(如果仍然是左边重)则是b,或c偏重,再称一次就解决了<BR> (如果是左边轻)则是d偏轻,问题解决<BR></P> <DIV class=quote><B>以下是引用<U>jiaju111</U>在2007-6-17 13:29:09的发言:</B><BR><BR>
<P>3次就够了吧<BR><BR>第一次 a,b,c 对 d,e,f 若平衡……(简单)<BR><BR>若不平衡(如果左边重)(如果右边重同样道理,因为题目是对称的)<BR><BR>第二次 b,c,d对e,f,g <BR><BR>若平衡 则a偏重,问题解决<BR><BR>若不平衡(如果仍然是左边重)则是b,或c偏重,再称一次就解决了<BR> (如果是左边轻)则是d偏轻,问题解决<BR></P></DIV>
<P>帅就一个字!!!<BR>呵呵[em02]</P> 厉害啊~佩服! <DIV class=quote><B>以下是引用<U>jiaju111</U>在2007-6-17 13:29:09的发言:</B><BR><BR>
<P>3次就够了吧<BR><BR>第一次 a,b,c 对 d,e,f 若平衡……(简单)<BR><BR>若不平衡(如果左边重)(如果右边重同样道理,因为题目是对称的)<BR><BR>第二次 b,c,d对e,f,g <BR><BR>若平衡 则a偏重,问题解决<BR><BR>若不平衡(如果仍然是左边重)则是b,或c偏重,再称一次就解决了<BR> (如果是左边轻)则是d偏轻,问题解决<BR></P></DIV>
<P>好像有些不对劲.. <BR>这里"<FONT color=red>若不平衡(如果仍然是左边重)则是b,或c偏重 / (如果是左边轻)则是d偏轻</FONT>", 没有考虑到"e或f偏轻"的情况...<BR>因为不能保证一定会把偏轻的那一个当成d拿到左边去(三选一)...所以分析时思路就被误导在"问题一定出在左边"上了.<BR>之后再称已经没有意义了.<BR><BR>我个人认为, 3次只能找出假币, 要判断轻重必须称第4次.<BR>假币判断方法:<BR>1.左右各放2个, 平衡:剩下4个有假币; 不平衡:这4个有假币<BR>2.在有假币的4个中, 取2个放上天平称, 平衡: 假币在剩下2个中; 不平衡:假币在这2个中<BR> 此时: 可以确定出A组:2个, 有假币; B组: 6个, 全部标准.<BR>3.从A组取1个(标记A1), 和B组取1个标准硬币放到天平上比较.<BR> 平衡: 则A2为假币; 不平衡: A1为假币.<BR><BR>4.将假币与标准硬币做最后比较, 确定轻重.</P> <DIV class=quote><B>以下是引用<U>野比</U>在2007-6-17 16:17:55的发言:</B><BR><BR>
<P>好像有些不对劲.. <BR>这里"<FONT color=red>若不平衡(如果仍然是左边重)则是b,或c偏重 / (如果是左边轻)则是d偏轻</FONT>", 没有考虑到"e或f偏轻"的情况...<BR>因为不能保证一定会把偏轻的那一个当成d拿到左边去(三选一)...所以分析时思路就被误导在"问题一定出在左边"上了.<BR>之后再称已经没有意义了.<BR><BR>我个人认为, 3次只能找出假币, 要判断轻重必须称第4次.<BR>假币判断方法:<BR>1.左右各放2个, 平衡:剩下4个有假币; 不平衡:这4个有假币<BR>2.在有假币的4个中, 取2个放上天平称, 平衡: 假币在剩下2个中; 不平衡:假币在这2个中<BR> 此时: 可以确定出A组:2个, 有假币; B组: 6个, 全部标准.<BR>3.从A组取1个(标记A1), 和B组取1个标准硬币放到天平上比较.<BR> 平衡: 则A2为假币; 不平衡: A1为假币.<BR><BR>4.将假币与标准硬币做最后比较, 确定轻重.</P></DIV>
<P>多谢指正啊,呵呵,不好意思!<BR><BR>不过我觉得还是可以只用3次:</P>
<P>第一次 a,b,c 对 d,e,f 若平衡……(简单)</P>
<P>若不平衡(如果左边重)(如果右边重同样道理,因为题目是对称的)</P>
<P>第二次 c,d,e 对f,g,h</P>
<P>若平衡 则a或b偏重,再称一次解决</P>
<P>若不平衡(如果仍然是左边重)则是c偏重或者f偏轻,再称一次解决<BR> (如果是左边轻)则是d或e偏轻,再称一次解决</P>
<P><BR> </P> 恩. 受启发了. 我发现我的方法可以改进.. 也只需要3次了!<br><br>假币判断方法:<br>1.左右各放2个, 平衡:剩下4个有假币; 不平衡:这4个有假币<br>2.在有假币的4个中, 取较[COLOR=BLUE]重[/COLOR]的2个放上天平称, 平衡: 假币在剩下2个中, 且较[COLOR=BLUE]轻[/COLOR]; 不平衡:假币在这2个中, 且较[COLOR=BLUE]重[/COLOR]<br> 此时: 可以确定出A组:2个, 有假币; B组: 6个, 全部标准.<br>3.从A组取1个(标记A1), 和B组取1个标准硬币放到天平上比较.<br> 平衡: 则A2为假币; 不平衡: A1为假币.<br>[COLOR=BLUE]假币轻重已由第2步得出[/COLOR] <P>楼上的方法似乎不对吧?<BR><BR>第1次如果平衡呢,第2次取哪两个比较?<BR></P> 都很不错,鉴定,可行!<br>赞哈!!! 发现问题了.. 我的方法最差情况(一直平衡)会出现第3步只能确定出假币(1/2).而无法得到假币轻重...<br>多谢jiaju111兄提醒.. to jiaju111:<br><br>很厉害也!怎么想到的???我想了N久也是4次!<br>你怎么捕捉这个思想的???分享一下哈!!! <P>谢谢!<BR><BR>其实我也是碰运气刚好想到而已<BR><BR>感觉这个就跟心理上的“换位思考”差不多<BR><BR>具体我也说不清楚,呵呵,不好意思啊</P> <DIV class=quote><B>以下是引用<U>jiaju111</U>在2007-6-17 20:29:12的发言:</B><BR>
<P>谢谢!<BR><BR>其实我也是碰运气刚好想到而已<BR><BR>感觉这个就跟心理上的“换位思考”差不多<BR><BR>具体我也说不清楚,呵呵,不好意思啊</P></DIV>
<P>[em10]<BR>[em17]</P>
