1. 程式人生 > >HDU5339 就是杭電bestcoder49第一題

HDU5339 就是杭電bestcoder49第一題

/*此題用的是深搜做的*/
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
int arr[30],vis[30];
int n,m,flag,ans,num;

void dfs(int xx,int yy)
{
    int j;
    if(xx==0)
    {
        ans=yy;
        flag=1;
        return ;
    }
    if(xx<0)return ;
    for(j=0;j<n;j++)
    {
        if(j==n)return ;//如果已經搜到盡頭了還沒有結果就返回
        if(vis[j]==0&&arr[j]<=xx)//對於比該數大的就不會對其進行取餘,節省了很多
        {
            vis[j]=1;//用完後標記
            dfs(xx%arr[j],yy+1);//對其餘數進行深搜直到搜到最小結果,搜完一次次數加一
            vis[j]=0;//如果此條路不行將其還原為原來狀態
        }
    }
}
bool cmp(int x,int y)
{
    return x>y;
}
int main()
{
    int i;
    int t;
    cin>>t;
    while(t--)
    {
        flag=0;//作為標記能模0的情況令其為0
        memset(vis,0,sizeof(vis));
        cin>>n>>num;
        for(i=0;i<n;i++)
        {
            cin>>arr[i];
        }
        sort(arr,arr+n,cmp);//對輸入的資料進行從大到小排序
        dfs(num,0);
        if(flag==1)
        {
            cout<<ans<<endl;
        }
        else
        {
            cout<<"-1"<<endl;
        }
    }
    return 0;
}

相關推薦

HDU5339 就是bestcoder49第一

/*此題用的是深搜做的*/ #include <iostream> #include <cstring> #include <algorithm> using n

OJ第一 a+b java實現

為了筆試來練程式設計,因為現在找的是java開發,所以用Java語言實現。 第一點:類名一定要是Main,否則編譯錯誤; 第二點:要判斷輸入是否為空while(in.hasNext()),否則Wrong Answer; import java.util.S

oj 1232------暢通工程

暢通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 71497  

oj 1106------排序

排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 69961  &nb

ACM 1071

Problem DescriptionIgnatius bought a land last week, but he didn't know the area of the land because the land is enclosed by a parabola an

acm刷記錄ID1000

2這本是個非常簡單的問題,騷就騷在end of file。看到這裡當時我就慌了,難道還要用檔案輸入輸出?這樣的話,檔名是什麼?無奈之下上網百度,得到如下處理方式while(scanf("%d%d",&a,&b) != EOF)其實就是把輸入緩衝區的東西全讀出來……什麼end of file,

ACM 1002

import java.math.BigInteger; import java.util.Scanner; public class Main { public static void

多校第一場補-1002 Balanced Sequence

names tar clas n) 遇見 include per 不為 return 1002: Balanced Sequence 題意:給定n個字符串,n的大小在1e5左右,字符串的長度也是1e5,字符串僅由‘(’或‘)’組成,合法串可以不是連續的,將這n個串按照一定的

【HDU6298】2018多校訓練賽第一第一Maximum Multiple 解題報告

題目連結: 題意: 給定一個數n,找出三個正整數x、y和z,滿足:n=x+y+z,x|n,y|n,z|n。然後求xyz的最大值。 輸入: 第一行輸入T,表示多少個測試用例。下面T行,每行輸入一個數n。 輸出: 對於每一個測試用例,輸出一個數,表示xyz的最大值

第一

getchar的用法:   首先getchar是在stdio.h中宣告一下才能用,所以標頭檔案中必須有stdio.h。他接收的是字元!   他的操作原理:當編譯執行至getchar()時,使用者輸入了字元按下回車鍵後,他以回車鍵為開始標識,開始一個一個從stdio流中讀取字

2021發工資

bsp dal 心算 name end return main spa 貪心算法 本菜雞聽dalao說這是簡單的貪心算法;加油吧菜雞 #include<iostream>using namespace std;int main(){ int n, m, an

HDU 4920(多校訓練#5 1010 ) Matrix multiplication(不知道該掛個什麽帽子。。。)

預處理 ica ref 循環 ring sca esp 題解 code 題目地址:HDU 4920 對這個題簡直無語到極點。。。竟然O(n^3)的復雜度能過。。。。方法有三。。 1:進行輸入優化和輸出優化。。(前提是你的輸入優化不能太搓。。。) 2:利用緩存優化。。詳情

HDU 4968(多校#9 1009)Improving the GPA (瞎搞)

popu 推斷 imp 暴力枚舉 pop ++ pos nan sin 題目地址:HDU 4968 這題的做法是全部學科的學分情況枚舉,然後推斷在這樣的情況下是否會符合平均分。直接暴力枚舉就可以。 代碼例如以下: #include <cstring> #i

(hdu)2053 Switch Game 水

center ++ class chang names top weight ext == Switch Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J

2018多校第一場(A)

bits 題意 img sca name amp alt 題解 .com 題意:x+y+z = n , n%x=0,n%y=0,n%z=0,求x*y*z 的最大值 題解: ac code: #include <bits/stdc++.h>

2018多校第四場(2018 Multi-University Training Contest 4) 1004.Problem D. Nothing is Impossible (HDU6335) -思維

假設 spa 。。 lan 多校 () class span tdi 6335.Problem D. Nothing is Impossible 題意:給你n道題目,m個人,每題有x個正確選項,y個錯誤選項,問你做對題數量最多的人做對了多少道題目。 如果一道題有

2018多校第一場1011(hdu 6308)

題解:這題主要會超時,不能用string。可以使用sscanf提取字串。 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<queue

2018多校第一場1003(hdu 6300)

題解:畫個圖發現只要按橫座標排序,每次取三個點就永遠不會相交 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<queue> #

100】【DP】2059 龜兔賽跑

Problem Description 兔子能夠毫不休息得以恆定的速度(VR m/s)一直跑。 烏龜不惜花下血本買了最先進的武器——“"小飛鴿"牌電動車。這輛車在有電的情況下能夠以VT1 m/s的速度“飛馳”,可惜電池容量有限,每次充滿電最多隻能行駛C米的距離,以後就只能用腳來蹬了,烏龜用腳

100】【貪心】2037 今年暑假不AC(活動安排問題)

今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 77466 &nbs