2017-03-29 59 views
1

我試圖解決以下問題:總和等於給定數量

什麼是總結所需要factoriais的最小數量等於一個給定數一個? (1≤一個≤10^5)

實施例:

輸入:10,輸出:3(!!! 10 = 3 + 2 + 2)

輸入:25,輸出:2(!25 = 4 + 1!)

我的代碼:

#include<bits/stdc++.h> 

using namespace std; 

int a; 

int rec(int vet){ 

    int count = 0; 

    a = a - vet; 
     if(a >= vet){ 
      count++; 
      rec(vet); 
     } 
    count++; 
    return count; 
} 

int main(){ 

    int vet[8] = {1}, count = 0; 

    cin >> a; 

    for(int i = 2; i <= 8; i++){ 
     vet[i-1] = vet[i-2]*i; 
    } 

    for(int i = 7; i >= 0; i--){ 
     if(a < vet[i]){ 
      continue; 
     } 

     count += rec(vet[i]); 
    } 

    cout << count << endl; 
} 

我的邏輯:

1°:一個 max爲等於100000,所以我們必須 最大fatorial比較是8;!

2°:我把等於或最小的factioral設置爲a, 從它減去階乘並計算++;如果在減法之後,我的因子仍然大於 a,我會以遞歸方式執行相同的步驟。

此代碼傳遞給基礎案例,但我得到了錯誤的答案。我無法找到它沒有通過的情況,所以我在這裏。

你能找到我錯在哪裏嗎?或者如果我的解決方案不好,我應該嘗試另一種方法。

感謝您的幫助!

+2

第1步,瞭解如何使用調試器。遍歷每行代碼,檢查變量變化等。發佈你找到的東西。謝謝。 – OldProgrammer

+0

@OldProgrammer問題是他似乎把它提交給一些在線法官,他沒有告訴他這個測試案例失敗了。 –

+0

@OldProgrammer就是這一點。我試着用很多輸入進行調試,然後全部都是正確的。我在這裏是因爲我沒有找到什麼輸入導致麻煩。 – Katreque

回答

0

正如我在評論中提到的那樣,問題在於rec函數。由於rec是本地的,所以計數沒有被正確地遞增。

一個簡單的解決辦法是更換錄製功能如下

int rec(int vec) { 
    int count = a/vec; 
    a = a % vec; 
    return count; 
} 

編輯:對於一個失敗的情況下,嘗試18.解決方案將是3,但你會得到2 我想你能弄清楚這個邏輯如何工作。如果沒有,你可以做一個循環。

+0

Apreciated!我沒有想到這個問題的解決方案非常簡單。還有18個是這個問題。再次感謝您的幫助和時間。 – Katreque

1

該問題很容易通過遞歸方法解決。

這裏檢查代碼:

#include <iostream> 

using namespace std; 

int factorial(int n) { 
     return n<=1 ? 1 : n * factorial(n-1); 
    } 


int MinFact(int number) 
{ 
      static int num_of_facts; 
      int a = 1; 
      if (number) 
      { 
         while(factorial(a+1)<=number)a++; 
         cout << a << "!" << endl; 
         num_of_facts++; 
         MinFact((number-factorial(a))); 
      } 
      return num_of_facts; 
} 


int main() 
{ 
      int num; 
      cout << "Enter number" << endl; 
      cin >> num; 
      num = MinFact(num); 
      cout << "Number of factorials: " << num; 
      return 0; 
} 
+0

感謝分享!這是解決這個問題的另一個好方法。我喜歡你的功能。偉大的理想!再次,謝謝! – Katreque

+0

不客氣。編輯。現在是迴歸因子的數量。 – Ep1c

相關問題