循環體變量利用的小技巧
再一次被人類的智慧震撼到了!發現一個很有意思的題,雖然以后工作中可能很少用到這種思想,但是能想到這么聰明的算法,本身就是很神奇的事情。題目:設計算法找到數組中最小的數,其中,數組元素個數不多于9個,且每個數組變量值為個位數。要求:只能用一個輔助變量i。分析:一般我們遍歷數組找到最大值需要借助兩個輔助變量,一個i作為循環體變量,一個min用來儲存最小值。題目要求只能用一個輔助變量,所以我們只能想辦法讓i同時實現i和min兩個變量的功能。 怎么辦呢?怎么辦呢? 聰明的人類想到了一個好辦法,利用i的個位保存最大值,利用i的十位來作為循環題變量的作用。具體一點:i%10 取i的個位,可以起到儲存最小值的作用,i/10 作為i的十位,可以作為循環體變量。下面上菜:——————————————————————————————————————————// 找出個位數 數組中的最小數 要求只能用一個數組外的變量i 且不破壞數組/*分析: 利用i這個數組的個位和十位可以表示兩個變量i/10 可以代替i增加遍歷數組i%10 可以代替min儲存最小的數這想法真是神了!!!! */ #include<iostream>using namespace std;#define N 7int searchMin(int a[]){int i;for(i=19;(i/10)<=N;i+=10){if((i%10)>a[(i/10)])i=(i/10)*10+a[(i/10)];}return i%10;} int main(){int i=1,a[N];for(i=1;i<=N;i++){cin>>a[i];}cout<<endl;cout<<searchMin(a)<<endl;char x;cin>>x; //暫停屏幕作用,方便調試return 0;}——————————————————————————————————————————新聞熱點
疑難解答