1. 程式人生 > >PAT乙級1001. 害死人不償命的(3n+1)猜想 (15) C++

PAT乙級1001. 害死人不償命的(3n+1)猜想 (15) C++

這裡寫圖片描述

這道題目並不是很難,解題思路如下:
首先根據計算方法,把每一次的處理分為兩種情況(奇數、偶數),然後因為要得出次數,所以很自然需要計數器和迴圈。臨界條件比較清晰,題目中說:簡單地數一下,需要多少步才能得到n=1?所以臨界條件就是n是否等於一,這裡程式設計就是n!=1。我的程式碼如下:

#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
    int n;
    cin>>n;
    int count=0;
    while(n!=1)//臨界條件
    {
         if
(n%2==0)//如果它是偶數,那麼砍掉一半 { n/=2; }else//如果它是奇數,則…… { n=(3*n+1)/2; } count++;//記錄次數 } cout<<count; system("pause"); return 0; }

之所以寫一下這個題目,是為了紀念我第一次使用CodeLite寫演算法題。之後要慢慢熟悉這個給力的IDE啦,哈哈,好像不僅僅可以編寫C、C++還可以編寫PHP和node.js呢。最後依然祝願大家程式設計快樂,一切順利!