聊聊迴圈的小套路 取乙個變數代表乙個事件

2021-10-10 02:09:09 字數 1292 閱讀 6251

當我們要解決一些問題時,碰到的並不都是能輕易驗證為真的問題

譬如我們想要求一定範圍內的素數,運用迴圈結構,只有在最後乙個迴圈執行完之後,我們才能夠真正判定,這個數確實是素數。再比如在鞍點問題中,我們只有在一行的迴圈都走完之後,我們才能下結論說:這一行的鞍點不存在。

於是在更加複雜的巢狀迴圈中,似乎尋找判定條件會變得越來越艱難。

因此,在這裡我們採取引入變數來代表乙個事件的方式來解決這個問題

從素數問題講起(在這裡以3~100裡的素數為例)

#include

#include

intmain()

//一旦true為假,那麼true=0,且跳出程式 }if

(true!=0)

/*由此,利用真的反面————偽,即可寫出乙個較為清晰的邏輯,即我們只需要證明其他都是偽,那麼剩下的那個能完整做完的即為真*/

printf

("%d "

,n);

}return0;

}

這是較為簡單的一種應用

接下來討論一下鞍點問題

先說說什麼是鞍點:乙個元素在所在行上最大、在所在列上最小

倘若我們要對行討論,如果某一行有鞍點,即輸出其座標,如果沒有鞍點,則要輸出沒有鞍點

這同樣是乙個需要做到迴圈最尾才能探尋出結果的問題,我們同樣採用取變數的方式來解決這個問題

#include

intmain()

//給陣列賦值

int x,y,true,go_on;

for(m=

0;m<=i-

1;m++)}

//找出滿足行最大的數(可能多個,也可能無)

while

(go_on==1)

}}//對行最大值是否為列最小值的判斷

if(true)

printf

("%d行%d列存在鞍點,值為%d\n",m+

1,n+

1,nums[m]

[n]);}

if(true==0)

;printf

("第%d行不存在鞍點\n"

,m+1);

//注意兩個對true討論的位置,分別放在不同的迴圈體中,乙個是希望單次迴圈後立馬出結果,另乙個是希望行迴圈全走完後出結果

}return0;

}

故而,總結一下,我們可以在迴圈中可以使用乙個變數來代表某個事件,使得邏輯變得更加清晰,尤其是對於迴圈全走完後才能知道結果的問題,這樣的小套路會使問題變得簡單

乙個迴圈 乙個變數列印乘法口訣

前幾天面試的時候遇到了乙個問題,當時也沒啥思路,而且時間比較緊,所以就空下了。回來後一直耿耿於懷,於是研究了一下。問題是這樣的 只用乙個迴圈和乙個變數列印出乘法口訣。想了一段時間感覺還是沒啥思路,上網查了查,網上倒是沒找到乙個迴圈的乘法口訣,但是乙個帖子的回答讓我一下有了思路。帖子裡是用兩個迴圈乙個...

while迴圈的乙個小例子

我國最高山峰是珠穆朗瑪峰 8848m,我現在有一張足夠大的紙張,厚度為 0.01m。請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峰的高度?分析 1 統計思想 定義統計變數 2 最高山峰是珠穆朗瑪峰 8848m 最終厚度 有一張足夠大的紙張,厚度為 0.01m 初始厚度 3 厚度不低於珠穆朗瑪峰的...

Python中乙個for迴圈迴圈多個變數的示例

首先,熟悉乙個函式zip,如下是使用help zip 對zip的解釋。help on built in function zip in module builtin zip z程式設計客棧ip seq1 seq2 seq1 0 seq2 0 return a list of tuples,where...