国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

華為OD機考算法題:分獎金

這篇具有很好參考價值的文章主要介紹了華為OD機考算法題:分獎金。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目部分

題目 分獎金
難度
題目說明 公司老板做了一筆大生意,想要給每位員工分配一些獎金,想通過游戲的方式來決定每個人分多少錢。按照員工的工號順序,每個人隨機抽取一個數(shù)字。按照工號的順序往后排列,遇到第一個數(shù)字比自己數(shù)字大的,那么,前面的員工就可以獲得 距離 * 數(shù)字差值 的獎金。如果遇不到比自己數(shù)字大的,就給自己分配隨機數(shù)數(shù)量的獎金。例如,按照工號順序的隨機數(shù)字是:2,10,3。那么第 2 個員工的數(shù)字 10 比第 1 個員工的數(shù)字 2 大,所以,第 1 個員工可以獲得 1 * (10 - 2) = 8。第 2 個員工后面沒有比他數(shù)字更大的員工,所以,他獲得他分配的隨機數(shù)數(shù)量的獎金,就是 10。第 3 個員工是最后一個員工,后面也沒有比他更大數(shù)字的員工,所以他得到的獎金是 3。
請幫老板計算一下每位員工最終分到的獎金都是多少錢。
輸入描述 第一行 n 表示員工數(shù)量(包含最后一個老板)。
第二是每位員工分配的隨機數(shù)字。
例如:
3
2 10 3
輸出描述 最終每位員工分到的獎金數(shù)量。
例如:
8 10 3
補充說明 隨機數(shù)字不重復(fù),員工數(shù)量(包含老板)范圍 1 ~ 10000,隨機數(shù)范圍 1 ~ 100000。
------------------------------------------------------
示例
示例1
輸入 3
2 10 3
輸出 8 10 3
說明

解讀與分析

題目解讀

分獎金時,員工先按照員工號排序。每位員工的獎金數(shù)與工號更大的員工抽取的數(shù)字相關(guān),與工號小的員工沒有關(guān)系。

此題可翻譯成:有一個整形數(shù)組,設(shè)為 arr,其長度為 n,數(shù)組個元素已經(jīng)初始化為指定的值。對于數(shù)組中第 i (0?≤ i < n)個元素,如果:
1.?在第 ( i + 1 ) 到 n 個元素中存在比 arr[i] 大的元素,如果這樣的元素有多個,取其下標(biāo)最小的一個元素。假設(shè)下標(biāo)最小的元素其下標(biāo)為 j,那么 arr[i]?的值修改為 ( arr[j] - arr[i]?) * ( j - i)。
2.?
在第 ( i + 1 ) 到 n 個元素中存在比 arr[i] 大的元素,那么 arr[i] 的值保持不變。
遍歷完數(shù)組 arr 之后,輸出數(shù)組 arr 的內(nèi)容。

分析與思路

雖然此題的難度為“難”,解題思路和算法卻都非常簡單。

我們可以直接從第 0 個元素開始往后遍歷,根據(jù)題目解讀中提到的兩種情況,逐一刷新每個元素的值。因為每個元素的最終值只與排在它后面的元素有關(guān),所以一定要從第?0 個元素開始遍歷,而不能從最后一個元素 (n - 1) 開始遍歷。

在遍歷過程中,最壞的情況需遍歷 n! 次元素,此算法的時間復(fù)雜度 O(n!);整個遍歷過程只使用了原始數(shù)據(jù)類型變量,且空間與數(shù)組長度無關(guān),此算法的空間復(fù)雜度為 O(1)。


代碼實現(xiàn)

Java代碼

import java.util.Scanner;

/**
 * 分獎金
 * @since 2023.09.11
 * @version 0.1
 * @author Frank
 *
 */
public class BonusDistribution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String input = sc.nextLine();
			int count = Integer.parseInt( input );
			input = sc.nextLine();
			String[] numbers = input.split( " " );
			// 此處 count == numbers.count,可以完全不用考慮 count.
			processBonusDistribution( numbers );
		}

	}
	
	private static void processBonusDistribution( String numbers[] )
	{
		int[] arr = arrString2Int( numbers );
		for( int i = 0; i < arr.length; i ++ )
		{
			for( int j = i + 1; j < arr.length; j ++ )
			{
				if( arr[j] > arr[i] )
				{
					arr[i] = ( arr[j] - arr[i] ) * ( j - i );
					break;
				}
			}
		}
		
		StringBuffer sb = new StringBuffer();
		for( int i = 0; i < arr.length; i ++ )
		{
			if( i != arr.length - 1 )
			{
				sb.append( arr[i] + " " );
			}else
			{
				sb.append( arr[i] );
			}
		}
		System.out.println( sb.toString() );
	}
	
	private static int[] arrString2Int( String numbers[] )
	{
		int ret[] = new int[numbers.length];
		for( int i = 0; i < numbers.length; i ++ )
		{
			ret[i] = Integer.parseInt( numbers[i] );
		}
		return ret;
	}

}

JavaScript代碼

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {
    while (line = await readline()) {
        // count 可以忽略
        var count = parseInt(line);
        line = await readline();
        var numberArr = line.split(" ");
        processBonusDistribution(numberArr);
    }
}();

function processBonusDistribution(numberArr) {
        var arr = arrString2Int( numberArr );
        for( var i = 0; i < arr.length; i ++ )
        {
            for( var j = i + 1; j < arr.length; j ++ )
            {
                if( arr[j] > arr[i] )
                {
                    arr[i] = ( arr[j] - arr[i] ) * ( j - i );
                    break;
                }
            }
        }
        console.log( arr.join(" "));
}

function arrString2Int( numberArr )
{
    var ret = [];
    for( var i = 0; i < numberArr.length; i ++)
    {
        ret.push( parseInt( numberArr[i] ) );
    }
    return ret;
}

(完)文章來源地址http://www.zghlxwxcb.cn/news/detail-707555.html

到了這里,關(guān)于華為OD機考算法題:分獎金的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【華為OD機考 統(tǒng)一考試機試C卷】結(jié)隊編程(C++ Java JavaScript Python)

    2023年11月份,華為官方已經(jīng)將 華為OD機考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。根據(jù)考友反饋:目前抽到的試卷為B卷或C卷/D卷,其中C卷居多 ,按照之前的經(jīng)驗C卷D卷部分考題會復(fù)用A卷/B卷題,博主正積極從考過的同學(xué)收集C卷和D卷真題,

    2024年02月03日
    瀏覽(101)
  • 【華為OD機考 統(tǒng)一考試機試C卷】符號運算(C++ Java JavaScript Python)

    2023年11月份,華為官方已經(jīng)將 華為OD機考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。根據(jù)考友反饋:目前抽到的試卷為B卷或C卷/D卷,其中C卷居多 ,按照之前的經(jīng)驗C卷D卷部分考題會復(fù)用A卷/B卷題,博主正積極從考過的同學(xué)收集C卷和D卷真題,

    2024年01月17日
    瀏覽(113)
  • 【華為OD機考 統(tǒng)一考試機試C卷】找單詞(C++ Java JavaScript Python)

    2023年11月份,華為官方已經(jīng)將 華為OD機考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。根據(jù)考友反饋:目前抽到的試卷為B卷或C卷/D卷,其中C卷居多 ,按照之前的經(jīng)驗C卷D卷部分考題會復(fù)用A卷/B卷題,博主正積極從考過的同學(xué)收集C卷和D卷真題,

    2024年02月02日
    瀏覽(93)
  • 【華為OD機考 統(tǒng)一考試機試C卷】高效貨運(C++ Java JavaScript Python)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進(jìn)行刷題,提高刷題效率。

    2024年02月03日
    瀏覽(97)
  • 【華為OD機考 統(tǒng)一考試機試C卷】 密碼輸入檢測(C++ Java JavaScript Python)

    2023年11月份,華為官方已經(jīng)將 華為OD機考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。 真題目錄:華為OD機考機試 真題目錄(C卷 + D卷 + B卷 + A卷) + 考點說明 專欄:2023華為OD機試( B卷+C卷+D卷)(C++JavaJSPy) 華為OD面試真題精選:華為OD面試真題精

    2024年02月05日
    瀏覽(101)
  • 【華為OD機考 統(tǒng)一考試機試C卷】火星文計算(C++ Java JavaScript Python)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進(jìn)行刷題,提高刷題效率。

    2024年02月20日
    瀏覽(30)
  • 【華為OD機考 統(tǒng)一考試機試C卷】項目排期(C++ Java JavaScript Python)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進(jìn)行刷題,提高刷題效率。

    2024年02月02日
    瀏覽(97)
  • 【華為OD機考 統(tǒng)一考試機試C卷】內(nèi)存冷熱標(biāo)記(C++ Java JavaScript Python)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進(jìn)行刷題,提高刷題效率。

    2024年02月03日
    瀏覽(108)
  • 【華為OD機考 統(tǒng)一考試機試C卷】螺旋數(shù)字矩陣(C++ Java JavaScript Python)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進(jìn)行刷題,提高刷題效率。

    2024年02月03日
    瀏覽(133)
  • 【華為OD機考 統(tǒng)一考試機試C卷】模擬目錄管理功能(C++ Java JavaScript Python)

    2023年11月份,華為官方已經(jīng)將 華為OD機考:OD統(tǒng)一考試(A卷 / B卷)切換到 OD統(tǒng)一考試(C卷)和 OD統(tǒng)一考試(D卷) 。根據(jù)考友反饋:目前抽到的試卷為B卷或C卷/D卷,其中C卷居多 ,按照之前的經(jīng)驗C卷D卷部分考題會復(fù)用A卷/B卷題,博主正積極從考過的同學(xué)收集C卷和D卷真題,

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包