广州企业网站建设推荐wordpress主题导出
2026/1/10 7:38:14 网站建设 项目流程
广州企业网站建设推荐,wordpress主题导出,有经验的武进网站建设,wordpress建站免费吗计算礼品发送的最小分组数目 华为OD机试真题 - 华为OD上机考试真题 100分题型 华为OD机试真题目录点击查看: 华为OD机试真题题库目录#xff5c;机考题库 算法考点详解 题目描述 又到了一年的末尾#xff0c;项目组让小明负责新年晚会的小礼品发放工作。 为使得参加晚会…计算礼品发送的最小分组数目华为OD机试真题 - 华为OD上机考试真题 100分题型华为OD机试真题目录点击查看: 华为OD机试真题题库目录机考题库 算法考点详解题目描述又到了一年的末尾项目组让小明负责新年晚会的小礼品发放工作。为使得参加晚会的同事所获得的小礼品价值相对平衡需要把小礼品根据价格进行分组但每组最多只能包括两件小礼品并且每个分组的价格总和不能超过一个价格上限。为了保证发放小礼品的效率小明需要找到分组数目最少的方案。你的任务是写一个程序找出分组数最少的分组方案并输出最少的分组数目。输入描述第一行数据为分组礼品价格之和的上限第二行数据为每个小礼品的价格按照空格隔开每个礼品价格不超过分组价格和的上限输出描述输出最小分组数量用例1输入5 1 2 5输出2题解思路贪心 双指针这道题要求找到分组数目最少的方案, 并且每个分组包含一个或两个礼品可以推导出要想分组数目越少就是两个组合的分组个数越多总分组数量越少。基于上面的分析要想两个数量分组越多应该尽可能选择当前最低价格 当前最高价格商品尝试组合如果当前总价格小于等于限定价格则将它们组合在一起如果不能则当前分组选择当前最佳价格对后续两两组合创造更多可能性。根据1 2分析代码逻辑就是对输入礼品进行升序排序然后定义left 0, right n-1,使用双指针逻辑实现2的逻辑最终最小分组数。c#includeiostream #includevector #includestring #include utility #include sstream #includealgorithm #includecmath #includemap using namespace std; // 通用 切割函数 函数 将字符串str根据delimiter进行切割 vectorint split(const string str, const string delimiter) { vectorint result; size_t start 0; size_t end str.find(delimiter); while (end ! string::npos) { result.push_back(stoi(str.substr(start, end - start))); start end delimiter.length(); end str.find(delimiter, start); } // 添加最后一个部分 result.push_back(stoi(str.substr(start))); return result; } int main() { int maxMoney; cin maxMoney; cin.ignore(); string input; getline(cin, input); vectorint nums split(input, ); sort(nums.begin(), nums.end()); int count 0; int left 0, right nums.size() - 1; while (left right) { // 剩最后一个 if (left right) { count; break; } // 可以选择两个 if (nums[left] nums[right] maxMoney) { left; } right--; count; } cout count; return 0; }JAVAimport java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br new BufferedReader(new InputStreamReader(System.in)); int maxMoney Integer.parseInt(br.readLine().trim()); String input br.readLine().trim(); String[] parts input.split( ); ListInteger nums new ArrayList(); for (String p : parts) { nums.add(Integer.parseInt(p)); } // 排序 Collections.sort(nums); int count 0; int left 0, right nums.size() - 1; while (left right) { // 剩最后一个 if (left right) { count; break; } // 可以选择两个 if (nums.get(left) nums.get(right) maxMoney) { left; } right--; count; } System.out.println(count); } }Pythonimportsysdefmain():maxMoneyint(sys.stdin.readline().strip())numslist(map(int,sys.stdin.readline().strip().split()))nums.sort()count0left,right0,len(nums)-1whileleftright:# 剩最后一个ifleftright:count1break# 可以选择两个ifnums[left]nums[right]maxMoney:left1right-1count1print(count)if__name____main__:main()JavaScriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letlines[];rl.on(line,linelines.push(line));rl.on(close,(){letidx0;constmaxMoneyparseInt(lines[idx]);constnumslines[idx].trim().split( ).map(Number);nums.sort((a,b)a-b);letcount0;letleft0,rightnums.length-1;while(leftright){// 剩最后一个if(leftright){count;break;}// 可以选择两个if(nums[left]nums[right]maxMoney){left;}right--;count;}console.log(count);});Gopackagemainimport(bufiofmtossortstrconvstrings)funcmain(){in:bufio.NewReader(os.Stdin)varmaxMoneyintfmt.Fscanln(in,maxMoney)line,_:in.ReadString(\n)linestrings.TrimSpace(line)parts:strings.Split(line, )nums:make([]int,0,len(parts))for_,p:rangeparts{val,_:strconv.Atoi(p)numsappend(nums,val)}// 排序sort.Ints(nums)count:0left,right:0,len(nums)-1forleftright{// 剩最后一个ifleftright{countbreak}// 可以选择两个ifnums[left]nums[right]maxMoney{left}right--count}fmt.Println(count)}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询