uva1374 題意:輸入正整數n(1≤n≤1000),問最少需要幾次乘除法可以從x得到x^n?例如,x^31需要6次 。 計算過程中x的指數應當總是正整數(如x^-3=x/x^4是不允許的)。
我對這個題目理解得不正確,而且是多次不正確。
通過p211的圖,我更好明白了每層擴充套件這能有1個,不能分叉都兼得。對深搜也有更好地認識了。實際上,小於logn的層都是找不到的。
這是我錯誤的**:
#include#include#include#include#includeusing namespace std;
#define imax 100
typedef structnode;
node f[5000];
int main()
{ void compute(int i,int j,int & kk_n,int k);
node tofind(int n,int kk_n);
int n=1;
while(scanf("%d",&n)&&n)
{ int k=0,kk;
node pa;
pa.x=1;
pa.v=0;
f[0]=(pa);
int k_n=1,n_k_n;
int last=1;
while(true)
{ n_k_n=k_n;
for(int i=0;i=i&&j0)
{ if(!last)
{cout<0)
{ for(int s=oldkk_n-1;s0)
{ for(int s=oldkk_n-1;s0)
{ for(int s=oldkk_n-1;k0)
{ for(int s=oldkk_n-1;s這個**存在問題,比如說27 需要先計算出9,然後相乘兩次就行,計算9需要4次,所以共有6次就夠了。但是我的這個程式無法得到正確答案,沒有更好處理好node.v的計算方法。
UVA 1374 迭代加深搜尋
所謂迭代加深搜尋實質 限制每一次所搜的最大深度,然後進行dfs深搜,並且我們可以利用節點深度的性質來進行剪枝來優化演算法,這個題中 由於深度固定,我們在當前層數上指數是a,最大深度為maxd,當前深度為cur,那麼我們接下來幾層向下深搜最大只會到達a maxd cur 以你為向下一層最大就是指數的二...
專案結題報告
專案結題報告 python基礎和相關庫的學習 一 python基礎與科學計算庫numpy 1.python語言基礎 2.python資料結構 列表,字典,元組 3.科學計算庫numpy基礎 4.numpy陣列操作 5.numpy矩陣基本操作 6.numpy矩陣初始化與建立 7.numpy排序與索引 ...
1179結題報告
我對已經非常失望了。也不能和文字分開了。不知道是出了什麼毛病。挺討厭亂七八糟!這個題是典型的dp,由低往上遞推。公式很簡單。需要注意乙個地方就是負負得正。不僅需要儲存一段區間的最大值,也需要儲存最小值。關於這一點我也是看了discuss後才明白的。至於為什麼要這樣,想想也能想明白。就不多說了。共參考...