PAT乙級 1020 1023 與區間貪心

2021-09-19 12:54:47 字數 2015 閱讀 5214

1020 月餅 (25 分)

問題描述:

就是從不同種類的月餅中,選出d重量的月餅,使得收益最大。允許某種月餅可以只取一部分。

解題思路:

先將每種月餅的單價計算出來,然後按照從大到小順序排序,然後根據d需求量選擇月餅。某種月餅不足d,就將此種月餅全部銷售,d在減去此種月餅重量,最後如果一種月餅只要一部分就可以滿足d,就用這一部分乘以單價就可以了。

但是我這個不知道怎麼有個點通不過,答案錯誤,很奇怪。也不知道**有問題。

**:

#include #include using namespace std;

typedef struct mooncake

mooncake;

bool cmp(mooncake a, mooncake b);

int main()

for(int i = 0; i < n; i++)

sort(cake, cake + n, cmp);

int i = 0;

while(d)

else

}printf("%.2f", result);

delete cake;

return 0;

}bool cmp(mooncake a, mooncake b)

1023 組個最小數 (20 分)

問題描述:

給定數字 0-9 各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數盡可能小(注意 0 不能做首位)。例如:給定兩個 0,兩個 1,三個 5,乙個 8,我們得到的最小的數就是 10015558。

解題思路:

定義乙個10個長度的int陣列,記錄每個數字的個數。然後判斷0有幾個,如果有0就先從1-9裡面看最小的是誰,先輸出它一次,然後將其個數減一,最後在按照0-9的順序,看每個數有多少個,就輸出多少個就是。

**:

#include int numcounts[10] = ;

void printallnums();

int main()

int i = 1;

while(!numcounts[i++]);

numcounts[i - 1]--;

printf("%d", i - 1);

printallnums();

return 0;

}void printallnums()

}}

區間貪心

問題描述:

區間不相交問題:給出n個開區間(x,y),從中選擇盡可能多的開區間,使得這些區間兩兩沒有交集。

解題思路:

將這些區間按照x的降序,y的公升序排列。然後從第乙個區間開始,記錄他的x為lastx,判斷下乙個的區間的y是否大於lastx,大於就說明有交集。當遇到乙個y小於lastx的區間是,這個區間不與前乙個區間相交,可以選中,同時將lastx更新為此區間的x值,然後繼續下乙個區間的判斷。

#include #include using namespace std;

typedef struct inteval

interval;

bool cmp(const inteval& a, const inteval& b)

else//x相同時,y降序 }

int main()

sort(i, i + n, cmp);

int result = 1;

int lastx = i[0].x;//第一次lastx 為第乙個區間的x

for(int i = 1; i < n; i++)

}printf("%d\n", result);

} return 0;

}

PAT乙級 插入與歸併

根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...

PAT 乙級 1035 插入與歸併

1.題目描述 根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成n個只包含1個元素的有序子串行,然後每次迭代歸併兩個相鄰的有...

PAT乙級 1035 插入與歸併

根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...