演算法題分析

2021-08-10 20:48:58 字數 1276 閱讀 4249

【題目描述】

在主城站街很久之後,小萌決定不能就這樣的浪費時間虛度青春,他打算去打副本。

這次的副本只有乙個boss,而且boss是不需要擊殺的,只需要和它比智力…….

boss會列出一正整數的序列,由小萌先開始,然後兩個人輪流從序列的任意一端取數,取得的數累加到積分裡,當所有數都取完,遊戲結束。

假設小萌和boss都很聰明,兩個人取數的方法都是最優策略,問最後兩人得分各是多少。

輸入 第一行:乙個正整數n(2 ≤ n ≤ 100),表示序列中正整數的個數。

第二行至末尾:用空格隔開的n個正整數(1 ≤ a[i] ≤ 200)

輸出 只有一行,用空格隔開的兩個數,小萌的得分和boss的得分。

樣例輸入

6 4 7 2 9 5 2

樣例輸出

18 11

上面的題目,在乙個討論組看到後自己寫乙個自己想的解法。

package com.demo;

public

class

main ;//輸入資料

int pa=0,pboss=0;//pa表示挑戰者,pboss表示boss

int indexarray = toindexarray(a);

boolean tt =false;

int flag = (indexarray.length&0x001 )== 1?(indexarray.length>>1)+1:(indexarray.length>>1);

for(int i=0;iif(iif(indexarray[i]==-1)elseelse

}}elseelse

else }}

}system.out.println("pa"+pa);

system.out.println("pboss"+pboss);

}/**

*設定乙個陣列,返回每兩個數中最大的數座標,第乙個數大那就是返回0否者返回1,如果陣列長度是奇數,到了中間數不比較,直接設定為-1,並且把步長i-1.繼續每兩個數比較。下面演算法用了一些小的技巧

*/public

static

int toindexarray(int a)

else

if(b)

if(a[i]>=a[i+1])

else

}else

if(a[i]>=a[i+1])

else}}

}else

else}}

return c;

}}

演算法設計與分析 上機題Mergesort

include using namespace std define n 100 int g array n 存放輸入的數字 static int count 存放元素的個數 初始化函式 void initial 合併函式 void merge int a,int l,int m,int r els...

演算法設計與分析 上機題Mergesort

include using namespace std define n 100 int g array n 存放輸入的數字 static int count 存放元素的個數 初始化函式 void initial 合併函式 void merge int a,int l,int m,int r els...

演算法 常見演算法題

演算法題 假如有100個不相同的數,比如從1到100,怎樣使用10次取出其中的10個不同的數字,要求每個數取出的概率一樣 一開始沒有說10次,所以我說,使用乙個random函式,以時間為種子來取,當取出乙個時,做標記,下次再取到這個數時,重新取一次 然後他就說了如果只能夠取10次怎麼辦?一開始我想到...