麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

簡單的枚舉

2019-11-14 12:52:16
字體:
來源:轉載
供稿:網友

補一下從前的做題記錄。。。。某天一口氣水了三道簡單的枚舉


這三道題的核心思想就是枚舉,通過暴力的枚舉所有情況來結局題目。 總體來說比較不費腦,只需要枚舉所有情況就可以了,但是在枚舉的 方法上,要注意方法的優化,不然可能會超時的。 第一題: UVA725-7.1-Division 題目鏈接:https://vjudge.net/PRoblem/UVA-725 這個題的意思是說輸入正整數n,按從小到大的順序輸出所有形如abcde/fghij=n的表達式。其中a~j正好為數字0~9的一個排列(可以有前導零) 如: 62 79546/01283=62 94736/01528=62 題目分析: 這個題我寫的比較麻煩,就是只枚舉分母,結果乘以分母即為分子。 然后用一個數組標記哪一個數用到過了,然后直接暴力枚舉所有數 判斷是否成立。 給出代碼:

#include<iostream>#include<vector>#include<queue>#include<set>#include<cstdio>#include<string.h>using namespace std;int mark[10];int judge(int x){ int h=1; int book=0; while(x%h!=x) { h=h*10; book++; } return book;}void com(int x){ int h=10; while(x) { int t=x%10; mark[t]=0; x=x/10; } return;}int main(){ //freopen("D://output.txt", "w", stdout); int n; memset(mark,1,sizeof(mark)); int a1=0; while(cin>>n&&n) { a1++; if(a1!=1) cout<<endl; int book1=1; for(int i=1234;;i++) { //cout<<i<<endl; int a=n*i; if(a>=100000) break; int h1=judge(a); int h2=judge(i); int h=h1+h2; if(h>10) break; if(h==9) mark[0]=0; com(a); com(i); int book=1; int j; for(j=0;j<10;j++) if(mark[j]) { book=0; break; } if(book) { book1=0; if(h1==4) cout<<0<<a<<" / "<<i<<" = "<<n<<endl; else if(h2==4) cout<<a<<" / "<<0<<i<<" = "<<n<<endl; else cout<<a<<" / "<<i<<" = "<<n<<endl; } memset(mark,1,sizeof(mark)); } if(book1) printf("There are no solutions for %d./n",n); }}

第二題: UVA11059-7.2-Maximum Product 題目鏈接: https://vjudge.net/problem/UVA-11059 輸入n個元素組成的序列S.找出一個乘積最大的連續子序列。 題目分析: 因為這個題的n很小,<=18,所以直接枚舉所有的子序列就可以做出。 給出代碼:

#include<iostream>#include<vector>#include<queue>#include<set>#include<cstdio>#include<string.h>using namespace std;typedef long long int LL;int main(){ //freopen("D://output.txt", "w", stdout); int book=0; int n; LL num[20]; while(cin>>n) { book++; int i; LL MAX=-1;; for(i=1;i<=n;i++) cin>>num[i]; for(i=n;i>0;i--) { int y=1; int turn=n-i+1; while(turn--) { LL x=1; for(int j=y;j<y+i;j++) x*=num[j]; //cout<<"x="<<x<<endl; if(MAX<x) MAX=x; y++; } } if(MAX<0) MAX=0; printf("Case #%d: The maximum product is %lld./n/n",book,MAX); } return 0;}

第三題: UVA10976-7.3-Fraction Again 題目鏈接: https://vjudge.net/problem/UVA-10976 輸入正整數k,找出所有的正整數x>=y,使得1/k=1/x+1/y. 題目分析: 這個題同樣就可以通過枚舉所有情況來結局。 不過通過對樣例數據的分析我們可以發現,如 果輸入一個k,x和y的值最大是無法超過k的兩倍的, 這樣就找到了邊界。 給出代碼:

#include<iostream>#include<vector>#include<queue>#include<set>#include<cstdio>#include<string.h>using namespace std;int main(){ //freopen("D://output.txt", "w", stdout); int n; while(cin>>n) { int num1[50000]; int num2[50000]; int book=0; int i; for(i=n+1;i<=n*2;i++) { long long int a=i-n; long long int b=n*i; if(b%a==0) { book++; num1[book]=b/a; num2[book]=i; } } printf("%d/n",book); for(i=1;i<=book;i++) { printf("1/%d = 1/%d + 1/%d/n",n,num1[i],num2[i]); } } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成年性羞羞视频免费观看无限 | 极品大长腿啪啪高潮露脸 | 精品在线视频观看 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 欧美日韩影视 | 越南一级黄色片 | 国产porn在线 | 亚洲午夜久久久精品一区二区三区 | 久久综合久久综合久久 | 久久久久久久久久久亚洲 | 国产精品自拍99 | 久久国产精品免费视频 | 欧美日韩视频第一页 | 日韩精品二区 | 国产精品片一区二区三区 | 国产精品久久久久久婷婷天堂 | 久久精品视频在线看99 | 香蕉视频18 | 免费毛片a线观看 | 久久99精品久久久久久久久久久久 | 国产精选在线 | 久久久成人免费视频 | 天天夜干| 免费在线观看成年人视频 | 久久精品国产99国产精品澳门 | 精品国产高清一区二区三区 | 成人免费一区二区三区视频网站 | 黄色成人短视频 | 日韩字幕在线 | 日韩视频在线观看免费 | 久久精品一二三区 | 日本高清无遮挡 | 久草在线综合 | 久久久久免费精品国产小说色大师 | 精品久久久久久久久久久下田 | 亚洲字幕av | 爽成人777777婷婷 | 欧美亚洲国产成人 | 欧美一区二区三区中文字幕 | 日本在线观看高清完整版 | 在线成人免费观看www |