青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0

給出一個分數,比如19/45,把它寫成若干個形如1/Ri的分數的和的形式,比如19/45=1/5+1/6+1/18,要求分母不能重復使用并且使用的分數的個數最少。(如果有多組個數相同的解,最后的分數的分母越小越好,這對于題目來說是次要的。)
1、分母從小到大搜索
為了避免重復搜索
2、使用迭代加深搜索
求“步驟數最少”這類問題,基本上有兩種似乎:廣搜、迭代加深搜索。對于這道題來說,如果廣搜將永遠得不到結果,分母可以無限大!但是迭代加深搜索就比較好,雖然做了許多重復工作,但狀態空間至少被限制住了。如果當前正在枚舉的分母,使得接下來的選擇即使每次都選擇最大,達到最大深度的時候也不可能達到目標分數,那么當前正在枚舉的分母及比它還大的分母,都不需要枚舉了。這樣可以給分母確定一個上界。另外,已經得到的結果加上當前枚舉的分母對應的分數,要小于等于目標分數,這樣給分母確定了一個下界(可以在O(1)的復雜度內確定這個下界)。

在下面的代碼中,因為確定上下界都使用了浮點運算,最終還是需要把當前結果和目標結果比較。
浮點運算~真讓人糾結的東西!

以下是我的代碼:
#include<algorithm>
#include
<cstdio>
#include
<cmath>
using namespace std;

int gcd(int a,int b)
{
    
for(int t=a%b;t;a=b,b=t,t=a%b); return b;
}
struct Type
{
    Type():a_(
0),b_(1) {}
    Type(
int a,int b):a_(a),b_(b) {}

    
int a_,b_;
};
Type 
operator+(const Type &a,const Type &b)
{
    Type re(a.a_
*b.b_+a.b_*b.a_,a.b_*b.b_);
    
int t(gcd(re.a_,re.b_));
    re.a_
/=t;
    re.b_
/=t;
    
return re;
}
bool operator==(const Type &a,const Type &b)
{
    
return (a.a_*b.b_==b.a_*a.b_);
}

Type target;
int ans,r[10000],t[10000];
bool found;

void dfs(const int &depth,const int &last,const Type &now)
{
    
if(depth>ans)
    {
        
if(now==target)
        {
            
if(found)
            {
                
bool cover(false);
                
for(int i=ans;i>=1;i--)
                    
if(r[i]>t[i])
                    {
                        cover
=true;
                        
break;
                    }
                    
else if(r[i]<t[i])
                        
break;
                
if(cover)
                    
for(int i=1;i<=ans;i++)
                        r[i]
=t[i];
            }
            
else
            {
                
for(int i=1;i<=ans;i++)
                    r[i]
=t[i];
                found
=true;
            }
        }
        
return;
    }
    
for(int i=max(last+1,(int)ceil((double)(target.b_*now.b_)/(target.a_*now.b_-target.b_*now.a_))); ;i++)
    {
        Type news(now
+Type(1,i));
        
if(depth+(int)ceil((double)(target.a_*news.b_-target.b_*news.a_)*(i+1)/(target.b_*news.b_))>ans)
            
break;
        t[depth]
=i;
        dfs(depth
+1,i,news);
    }
}

int main()
{
    freopen(
"data.in","r",stdin);
    freopen(
"data.out","w",stdout);

    
while(scanf("%d%d",&target.a_,&target.b_)==2)
    {
        found
=false;
        
for(ans=1; ;ans++)
        {
            dfs(
1,0,Type());
            
if(found)
                
break;
        }

        
for(int i=1;i<=ans;i++)
        {
            
if(i!=1)
                printf(
" ");
            printf(
"%d",r[i]);
        }
        printf(
"\n");
    }

    
return 0;
}
posted on 2011-05-09 22:59 lee1r 閱讀(2450) 評論(1)  編輯 收藏 引用 所屬分類: 題目分類:搜索

FeedBack:
# re: 經典迭代加深搜索——埃及分數
2014-06-09 17:57 | lyd
剛剛看了看你的這個問題的代碼,發現有個問題,但是在我的代碼中也有相同的問題,無法解決希望我們可以探討一下,有興趣可以訪問我的網易博客:http://lydws.blog.163.com/。就是有一組數據:3 997;這組數據我們的答案都是:354 5982 58823;我對比了很多人的代碼,也都是這個問題,正確答案其實不是這個,不過我這里沒有那個正確答案,我先找找看有沒有,如果不麻煩的話你可以看一看,謝謝。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费观看日韩av| 伊人精品视频| 欧美日本一区二区高清播放视频| 国产一区二区三区成人欧美日韩在线观看| 欧美成年人在线观看| 国产精品都在这里| 欧美国产在线观看| 欧美国产视频一区二区| 国产一区自拍视频| 午夜免费电影一区在线观看| 欧美激情a∨在线视频播放| 亚洲综合色噜噜狠狠| 欧美手机在线| 亚洲精品网址在线观看| 狂野欧美一区| 久久久综合网| 欧美一二区视频| 亚洲精品日韩激情在线电影 | 国产综合精品| 国产亚洲精久久久久久| 91久久久久| 亚洲欧美国产精品va在线观看 | 精品999网站| 欧美va亚洲va国产综合| 欧美有码视频| 亚洲影院在线观看| 久久久久久日产精品| 亚洲第一久久影院| 激情丁香综合| 亚洲电影免费观看高清完整版在线观看| 国产精品hd| 国产精品一二一区| 国产揄拍国内精品对白| 亚洲电影免费观看高清完整版在线观看 | 亚洲视频在线观看三级| 红桃av永久久久| 最近中文字幕mv在线一区二区三区四区| 亚洲高清资源综合久久精品| 亚洲男女自偷自拍| 免费在线播放第一区高清av| 亚洲国产精品精华液网站| 国产精品黄页免费高清在线观看| 久久综合伊人77777蜜臀| 久久久久在线观看| 亚洲精品少妇30p| 欧美一区二区黄| 欧美日韩在线视频一区| 亚洲三级电影全部在线观看高清| 久久青草福利网站| 亚洲午夜精品一区二区| 欧美日韩一区在线观看视频| 亚洲国产小视频| 美女精品国产| 久久精品日韩一区二区三区| 国产精品主播| 欧美一区二区三区成人| 制服丝袜激情欧洲亚洲| 欧美视频在线观看一区二区| 在线视频亚洲| 日韩视频三区| 欧美日韩一区高清| 性感少妇一区| 欧美成人免费播放| 久久亚洲国产精品日日av夜夜| 国内视频精品| 欧美成人精品影院| 蜜乳av另类精品一区二区| 亚洲电影免费观看高清完整版| 欧美成人精品不卡视频在线观看| 久久久久久久一区二区| 亚洲大片在线| 亚洲第一网站| 欧美日本韩国一区| 亚洲专区欧美专区| 亚洲欧美视频在线观看视频| 国产午夜精品久久久久久免费视| 久久精品国产99| 久久国产一二区| 亚洲人成欧美中文字幕| 亚洲精品综合精品自拍| 欧美午夜电影一区| 久久精视频免费在线久久完整在线看 | 久久久精品动漫| 亚洲国产婷婷香蕉久久久久久99 | 久久亚洲国产成人| 久久综合伊人77777麻豆| 亚洲欧洲综合另类| 亚洲深夜av| 一区二区三区无毛| 99国产精品国产精品毛片| 国产精品亚洲视频| 免费观看日韩av| 欧美日韩在线视频首页| 久久福利精品| 久久久99精品免费观看不卡| 免费短视频成人日韩| 在线视频一区观看| 久久精品亚洲精品国产欧美kt∨| 亚洲乱码久久| 久久成人国产精品| 亚洲午夜精品一区二区三区他趣 | 久久av资源网| 亚洲精选视频免费看| 亚洲无玛一区| 亚洲精品久久视频| 欧美在线视频a| 中日韩高清电影网| 久久人人97超碰国产公开结果| 亚洲天堂av高清| 快播亚洲色图| 久久九九国产精品| 国产精品久久久久久影视 | 欧美精品午夜视频| 亚洲综合激情| 一本久久综合亚洲鲁鲁| 欧美中文在线观看| 亚洲欧美日韩人成在线播放| 狼人天天伊人久久| 久久爱另类一区二区小说| 欧美性做爰毛片| 亚洲三级色网| 亚洲黄色成人| 久久精品一区二区国产| 欧美在线网址| 国产精品v日韩精品v欧美精品网站| 欧美激情二区三区| 尹人成人综合网| 欧美一区成人| 欧美在线视频导航| 国产精品免费区二区三区观看| 亚洲国产天堂久久综合网| 在线免费观看欧美| 久久综合久久美利坚合众国| 久久久久欧美精品| 国产欧美在线观看| 亚洲在线观看免费视频| 亚洲一区二区精品在线| 欧美日韩一区三区| 99精品欧美一区二区三区| 亚洲午夜一区二区三区| 欧美日韩免费区域视频在线观看| 亚洲高清免费| 亚洲精选中文字幕| 欧美国产精品v| 亚洲精品乱码久久久久久黑人| 老司机凹凸av亚洲导航| 欧美大片一区| 亚洲伦理在线观看| 欧美精品激情在线观看| 亚洲电影一级黄| 免费观看30秒视频久久| 欧美gay视频激情| 91久久嫩草影院一区二区| 免费精品视频| 亚洲精品乱码久久久久久按摩观| 亚洲人成网站影音先锋播放| 欧美精品videossex性护士| 亚洲麻豆视频| 小黄鸭视频精品导航| 一区福利视频| 欧美激情小视频| 亚洲视频www| 久久久亚洲成人| 亚洲毛片网站| 国产精品免费网站| 久久一综合视频| 日韩午夜在线电影| 欧美专区在线观看一区| 国内外成人免费激情在线视频| 久久人人超碰| 日韩视频―中文字幕| 久久精品国产视频| 亚洲三级观看| 国产欧美一区二区精品性色| 久久人人97超碰国产公开结果| 亚洲激情在线观看视频免费| 亚洲一区二区三区免费观看| 国产精品日韩二区| 久久久水蜜桃| 亚洲图片欧洲图片av| 欧美成人国产一区二区| 亚洲一区视频在线| 欧美综合国产精品久久丁香| 在线观看国产一区二区| 亚欧美中日韩视频| 亚洲高清三级视频| 欧美与黑人午夜性猛交久久久| 极品中文字幕一区| 欧美四级电影网站| 久久人人超碰| 亚洲免费一在线| 91久久久在线| 久久一区激情| 午夜性色一区二区三区免费视频 | 久久久另类综合| 亚洲尤物视频在线| 亚洲激情自拍| 欧美wwwwww| 老司机亚洲精品| 欧美一区二区在线观看|