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

心如止水
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嫩草影院| 国模叶桐国产精品一区| 99国产精品久久久久老师| 香蕉久久夜色| 亚洲高清一区二区三区| 亚洲自拍偷拍视频| 裸体女人亚洲精品一区| 国产精品美女久久久浪潮软件| 伊人成年综合电影网| 亚洲一区国产视频| 男女激情久久| 亚洲一区二区三区精品在线观看| 久久亚洲色图| 国产麻豆9l精品三级站| 最新日韩在线| 久久高清一区| 亚洲午夜精品视频| 欧美精品高清视频| 在线欧美视频| 久久久福利视频| 亚洲婷婷免费| 欧美日韩三级视频| 亚洲精品九九| 你懂的网址国产 欧美| 亚洲欧美精品一区| 国产精品海角社区在线观看| 亚洲乱码久久| 欧美激情精品久久久久久蜜臀| 性色一区二区三区| 国产精品亚洲综合色区韩国| av72成人在线| 亚洲激情一区二区| 男女精品视频| 亚洲国产综合91精品麻豆| 久久久爽爽爽美女图片| 亚洲欧美在线x视频| 国产精品视频成人| 性欧美8khd高清极品| 亚洲无线视频| 国产精品入口尤物| 午夜一级久久| 午夜精品偷拍| 国产午夜精品久久久| 欧美一区二区三区免费大片| 国产精品99久久久久久宅男 | 久久国产天堂福利天堂| 亚洲免费播放| 欧美视频免费在线| 亚洲综合不卡| 亚洲一区二区精品视频| 国产精品福利片| 欧美一区=区| 欧美一区国产二区| 在线国产日韩| 91久久精品国产91久久性色tv| 欧美国产日韩精品| 亚洲永久免费观看| 欧美啪啪一区| 亚洲国产成人精品视频| 久久五月激情| 欧美一级在线亚洲天堂| 国产一区二区三区在线观看精品| 久久精品国产v日韩v亚洲| 欧美一级成年大片在线观看| 国产日韩精品一区二区三区 | 99国内精品| 国产精品美女999| 久久久综合网站| 久久精品国产视频| 99视频在线观看一区三区| 亚洲午夜免费福利视频| 国产专区一区| 亚洲国产日韩美| 国产精品女主播| 女生裸体视频一区二区三区| 欧美精品久久久久久久久老牛影院| 亚洲图片欧美日产| 欧美在线影院| 亚洲亚洲精品三区日韩精品在线视频| 亚洲中字在线| 亚洲精品午夜| 新狼窝色av性久久久久久| 亚洲国产精品一区二区第四页av| 亚洲麻豆一区| 在线观看国产成人av片| 亚洲少妇中出一区| 久久久精品一品道一区| 亚洲伦理中文字幕| 亚洲女性裸体视频| 91久久亚洲| 久久超碰97中文字幕| 亚洲视频一起| 乱码第一页成人| 午夜精品久久久久久99热软件| 久久综合九色综合欧美狠狠| 午夜视频一区二区| 欧美日韩午夜精品| 麻豆国产精品777777在线| 欧美调教vk| 91久久精品视频| 亚洲国产精品精华液2区45| 亚洲欧美制服另类日韩| 亚洲视频在线观看视频| 免播放器亚洲一区| 久久人人97超碰精品888| 国产酒店精品激情| 宅男噜噜噜66一区二区| 亚洲视频欧美视频| 欧美日韩黄色一区二区| 亚洲三级国产| 日韩视频在线观看国产| 欧美高清在线精品一区| 亚洲国产精品传媒在线观看| 亚洲黄色成人| 欧美国产日韩精品| 亚洲激情国产| 99xxxx成人网| 欧美日韩一区二区三区在线看| 亚洲精品美女免费| 一区二区三区免费看| 欧美日韩免费视频| 夜夜爽www精品| 亚洲欧美不卡| 国产精品亚洲综合| 欧美中文字幕不卡| 欧美18av| 亚洲精一区二区三区| 欧美精品国产一区二区| 亚洲精选在线观看| 亚洲主播在线观看| 国产精品嫩草99a| 午夜精品亚洲一区二区三区嫩草| 欧美亚洲在线观看| 黄色亚洲免费| 美女成人午夜| 亚洲伦理一区| 午夜在线一区二区| 国产午夜亚洲精品理论片色戒| 欧美在线一级视频| 亚洲国产综合在线看不卡| 亚洲视频福利| 狠狠色2019综合网| 欧美成人午夜激情在线| 99国内精品久久| 久久精品视频在线| 亚洲破处大片| 国产精品乱人伦中文| 久久99伊人| 亚洲精品一区二区三区不| 午夜一区二区三区在线观看| 又紧又大又爽精品一区二区| 欧美日本高清视频| 午夜伦欧美伦电影理论片| 欧美成人精品1314www| 亚洲视频免费观看| 一区二区三区在线视频免费观看| 欧美—级a级欧美特级ar全黄| 久久久国产亚洲精品| 尤物yw午夜国产精品视频| 欧美人成在线| 久久精品国产v日韩v亚洲| 91久久在线| 老司机精品福利视频| 99国产成+人+综合+亚洲欧美| 国产精品揄拍500视频| 欧美精品三级日韩久久| 欧美一区国产一区| 亚洲精品一区二区三区在线观看| 欧美一区二区精美| 99精品视频免费观看视频| 国产亚洲精品一区二区| 欧美视频中文字幕在线| 欧美激情无毛| 久久综合99re88久久爱| 亚洲欧美综合v| 在线亚洲成人| 亚洲三级观看| 亚洲国产精品一区二区尤物区| 久久久久一区二区| 欧美在线视频网站| 香港成人在线视频| 亚洲欧美国产精品专区久久|