目錄
說明
方法
#範例
輸出
#結論
首頁 後端開發 C++ 用加法或減法每一步得到N的最小步驟數

用加法或減法每一步得到N的最小步驟數

Sep 16, 2023 pm 01:13 PM
加法 減法 步驟數

從上面的問題陳述中,我們的任務是得到最少的步驟,在每個步驟中使用加法或減法可以得到給定的數字 N。我們可以理解,我們需要列印可以執行的最小步驟數以及對任何給定整數 N 的步驟順序,透過步驟編號的加減來達到從 0 開始的數字。

在這個問題集中,我們可以在每一步的當前位置上加減等於步數的數字。例如,我們可以在步驟 1 中新增 1 或 -1。進一步,我們可以在步驟 2 中加入 2 或 -2,依此類推。我們可以根據情況在每一步中添加或減去數字。

這個問題的主要挑戰是我們需要從 0 開始執行最少的步驟來達到 N。讓我們透過一個例子來更好地理解這個問題。

下面給出的範例將向您說明透過執行上述操作,我們從 0 開始的 2 個步驟可以得到的每個數字。

用加法或減法每一步得到N的最小步驟數

例如,假設我們有 N=1

輸出

Minimum no of steps: 1
Sequence of steps: 1
登入後複製

說明

我們可以用兩種方式達到 1 -

  • 只需在步驟 1 加 1 即可從 0 移動到 1,這需要 1 步。

  • 在步驟 1 中減 1 以從 0 移動到 -1,然後在步驟 2 中加 2 以從 -1 移動到 1,這需要 2 個步驟。

由於問題顯示我們需要最少的步數才能達到任意數字 N,因此該輸入的所需輸出將為 1。

對於,N=3

#輸出

Minimum no of steps: 2
Sequence of steps: 1 2
登入後複製

說明

我們在步驟 1 中加入 1 以從 0 移動到 1,然後在步驟 2 中加入 2 以從 1 移動到 3。

方法

解決問題的最好方法是先弄清楚N是正數還是負數。我們必須分別在適當的步數上加上或減去才能解決問題。

  • 如果 N 是正數,則繼續加步數,直到總和大於或等於 N。

  • 同樣,如果N是負數,則繼續減去步數,直到總和大於或等於N。

  • 如果在上述情況下總和等於 N,則傳回步驟數和步驟順序。主要問題是超過N時的情況處理。

一旦總和超過N,檢查(sum-N)是偶數還是奇數。

  • 如果 (sum-N) 是偶數,那麼我們必須以 (sum-N)/2 步長執行減法才能達到 N。

    讓我們透過一個適當的例子來更好地理解這個案例。

    對於,N=8

    1 2 3 4=10,超過了8。

    因為 10-8=2 這是偶數。所以我們將以 2/2 步長減去,即

    第 1 步。因此,步驟的順序將為 -1 2 3 4 和最小值

    到達 N 的步數將為 4

  • 如果(sum-N)是奇數,先判斷上一步總和超過N的數是偶數還是奇數。

    如果上一步是奇數,則透過新增下一個步驟編號來執行一個步驟,這將使我們的 (sum-N) 成為偶數,然後執行上述步驟以獲得所需的結果。

    例如,N=9

    1 2 3 4=10,超過了 9。

    因為10-9=1,這是一個奇數。下一步是 5,它是一個奇數,因此我們只需執行一步,將 5 加到總和上,得到 15,使得 (sum-N)=6。在步驟 3 中執行減法將會得到序列 1 2 -3 4 5,這是所需的輸出。

    假設上一步是偶數,在這種情況下,我們需要執行兩步,將第i 步相加並減去第(i 1) 步,得到(sum- N) 作為偶數以獲得所需的步驟序列。

    對於 N=5

    1 2 3=6,超過5。

    由於 (sum-N) =1,所以當 su 超過數字 N 時,我們將考慮最後一步。由於它是偶數,我們將執行兩個步驟,即第 4 步和第 5 步。我們的任務是使 (sum-N) 即使如此,透過在步驟 4 中添加並在第 5 步減去,我們可以使 (sum-N) 即使從總和中減去 1。由於 (sum-N) 等於 0,因此我們得到 N。因此,序列為 1 2 3 4 -5。

#範例

下面是該方法的 C 程式碼 -

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void minimumStep(int n){
   vector <int> steps; // for storing the sequence
   int totalSum=0; 
   int temp=0;
   if(n>=0){   // if n is positive then temp will store positive
      temp=1;
   } else {
      temp=-1;  // n is negative then temp will store negative
   }
   n=abs(n);
   int step=0;
   for(step=1;totalSum<n;step++){  // for storing the steps till sum is not greater than n
      steps.push_back(temp*step);
   
      totalSum=totalSum+step;
   }
   if(totalSum>temp*n) {  //when sum greater than n 
      if(step%2==0) {   //when step is even 
         totalSum=totalSum-n; 
         if((totalSum)%2!=0) { // when totalSum-n is odd
            steps.push_back(temp*step);  //store the addition of next step 
            steps.push_back((temp*-1)*(step+1));  // store the subtraction of next step 
            totalSum--;  //make totalSum even
         }
         int check=(totalSum)/2;
         check--;
         steps[check]=steps[check]*-1; 
		} else {        //when step is odd
         totalSum=totalSum-n;
         if((totalSum)%2!=0)  {  // when totalSum-n is odd 
            steps.push_back(temp*step);   //store the next addition value 
            totalSum+=step; 
            step++;
         }
         int check=(totalSum)/2;
         check--;
         steps[check]=steps[check]*-1;
   
      }
   }
   //print the minimum number of steps taken 
   cout<<"The minimum number of steps : "<<steps.size()<<endl;
   //print the steps is stored in vector
      cout<<"Sequence of steps : ";
   for(int i=0;i<steps.size();i++){
      cout<<steps[i]<<" ";
   }
   
}
int main(){
   int m=17;
   minimumStep(m);
   
   return 0;
}
登入後複製

輸出

The minimum number of steps : 6
Sequence of steps : 1 -2 3 4 5 6
登入後複製

時間複雜度:O(sqrt(N))

#空間複雜度:O(sqrt(N))

#結論

在本文中,我們試圖解釋透過在每一步中添加或減去並列印序列來找出達到 N 的最少步驟的方法。我希望這篇文章可以幫助您更好地學習這個概念。

以上是用加法或減法每一步得到N的最小步驟數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
Python加法程式碼怎麼寫_Python加法程式碼寫法教程 Python加法程式碼怎麼寫_Python加法程式碼寫法教程 Apr 02, 2024 pm 06:16 PM

1.先開啟線上python編輯頁面。 2、然後在程式區輸入程式碼。 3.接著點選左上角的】運行【,輸入第一個加數,按下回車,輸入第二個加數。 4.最後按回車,得出兩個加數的和。這就是簡單的python加法程式碼。

不使用乘法、除法和取模運算子來進行兩個整數的除法 不使用乘法、除法和取模運算子來進行兩個整數的除法 Sep 21, 2023 pm 12:41 PM

在這個問題中,我們只需要將兩個整數相除,而不需要使用乘法、除法和取模運算子。儘管我們可以使用加法、乘法或位元操作。問題陳述指出我們將得到兩個整數x和y。在不使用乘法、除法或取模運算子的情況下,我們需要確定x除以y後的商數。範例輸入:x=15,y=5輸出:3輸入:x=10,y=4輸出:2輸入:x=-20,y=3輸出:-6方法方法1(使用簡單的數學)在這種方法中,我們將使用一個簡單的數學演算法。以下是我們要遵循的步驟的分步說明-我們將從被除數(即x)中不斷減去除數(即y),直到x大於或等於y。當y大於x時

Oracle資料庫運算技巧:減法操作詳解 Oracle資料庫運算技巧:減法操作詳解 Mar 02, 2024 pm 06:15 PM

Oracle資料庫作為一種強大的關聯式資料庫管理系統,提供了豐富的運算操作來滿足使用者的需求。在日常的資料庫操作中,減法操作是一個常見且重要的運算,它能夠幫助我們實現資料的減法運算,從而得到我們所需的結果。本文將詳細討論Oracle資料庫中減法操作的相關技巧,並給出具體的程式碼範例,幫助讀者更好地理解並運用這項功能。 1.減法操作的基本概念在Oracle數據

Excel怎麼做減法 Excel怎麼做減法 Mar 20, 2024 pm 02:46 PM

Excel是我們日常辦公中必不可少的一個辦公室軟體,那麼對於一些初次學習Excel的人來說總會遇到一些小問題,就比如Excel怎麼做減法這一問題,今天我就來跟小伙伴們分享這個操作步驟,具體的操作步驟就在下方,小夥伴們快來認真的看一看吧! 1.首先,打開Excel資料表,Excel想要做減法是透過公式來實現的,而公式一般都是由等號引導的,故在需要做減法的單元格中,先輸入=,(如下圖紅色圈出部分圖所示)。 2.然後,點選被減數所在的儲存格,就會自動在公式中補充上該儲存格的名字,(如下圖紅色圈出部分所示)。 3

探究Python運算子的意義與應用:加、減、乘、除 探究Python運算子的意義與應用:加、減、乘、除 Jan 20, 2024 am 09:21 AM

深入理解Python運算子:加法、減法、乘法、除法及其意義,需要具體程式碼範例在Python程式語言中,運算子是進行各種數學運算的重要工具之一。其中,加法、減法、乘法和除法是最常見的運算符,本文將深入探討這些運算符的意義及其在Python中的使用方法。加法運算子(+)加法運算子用於將兩個數字相加,也可以用於連接兩個字串。 x=5y=3result

PPT如何製作減法設計美化圖表 PPT如何製作減法設計美化圖表 Mar 20, 2024 pm 02:00 PM

1.圖表的基本美化操作空間小,將幹擾的展示元素去掉。幹擾資料的元素有背景、網格線、圖例,可以刪除美化以及陰影進行柔化。 2.進入【PPT】,【開啟】圖表,點選【圖表】,選擇【+】,將其取消【勾選】,具體如圖示。 3.【右鍵】設定資料系列格式,點選【填滿】,勾選【無填滿】。點選【資料列】,點選【陰影】去除陰影,選擇【外框】,將【文字】顏色白色。 4.點選【刻度】,選擇【刻度線】,調整【主題類型】無,【顏色】白色,具體如圖示。 5.將需要刪除的地方刪除,使表格變得清爽,設計時不要一味的添加東西,適當的做

用加法或減法每一步得到N的最小步驟數 用加法或減法每一步得到N的最小步驟數 Sep 16, 2023 pm 01:13 PM

從上面的問題陳述中,我們的任務是得到最少的步驟,在每個步驟中使用加法或減法可以得到給定的數字N。我們可以理解,我們需要列印可以執行的最小步驟數以及對任何給定整數N的步驟順序,透過步驟號的加減來達到從0開始的數字。在這個問題集中,我們可以在每一步的當前位置上加減等於步數的數字。例如,我們可以在第1步添加1或-1。進一步,我們可以在第2步驟增加2或-2,依此類推。我們可以根據情況在每一步中添加或減去數字。這個問題的主要挑戰是我們需要從0開始執行最少的步驟來達到N。讓我們透過一個例子來更好地理解這個問

使用pthread在C/C++中實現矩陣的加法和減法 使用pthread在C/C++中實現矩陣的加法和減法 Aug 28, 2023 am 09:05 AM

這裡我們將看到如何使用多執行緒環境執行矩陣加法和減法。 pthread用於在C或C++中同時執行多個執行緒。有兩個矩陣A和B。每個矩陣的階數為(mxn)。每個執行緒將獲取每一行,並執行加法或減法。因此,對於m行,有m個不同的執行緒。範例#include<iostream>#include<pthread.h>#include<cstdlib>#include<cstdint>#defineCORE3#defineMAX3usingnamespacestd;i

See all articles