切蛋糕和選擇排序

題目:

鏈接:https://ac.nowcoder.com/acm/contest/68536/C

題目描述

給定一個(gè)圓和n條直線,現(xiàn)在需要使用這n條線盡可能地把圓分成多份,問(wèn)使用n條線最多能把圓分成幾份?

輸入描述:

第一行給定一個(gè)正整數(shù)T,代表數(shù)據(jù)組數(shù)。(T<=1e5)。

接下來(lái)T行,每行一個(gè)非負(fù)整數(shù),代表線的數(shù)量。(<=1e6)

輸出描述:

共T行,每行一個(gè)整數(shù),代表n條線最多能把圓分成幾份。

示例1

輸入

2

4

2

2

4


輸出

11

4

11


核心:該題核心就是等差數(shù)列的性質(zhì)

要想把圓分成的塊數(shù)最多,那么增加的每一條線都不能過(guò)前面所有的交點(diǎn)。

圓面本身是一個(gè)部分;

第一條直線只能穿過(guò)圓面本身這一個(gè)部分,畫(huà)第一條直線時(shí)圓面加一個(gè)部分,最多分成1+1=2 塊;

第二條直線只能穿過(guò)兩個(gè)部分,畫(huà)第二條直線時(shí)圓面加兩個(gè)部分,最多分成1+(1+2)=4 塊;

第三條直線只能穿過(guò)三個(gè)部分,畫(huà)第三條直線時(shí)圓面加三個(gè)部分,最多分1+(1+2+3)=7 塊;

依次類推可得,n條直線,最多分成1+(1+2+3+4+…+n) 塊

即n*(n+1)/2+1 塊。(等差數(shù)列求和)

————————————————

原文鏈接:https://blog.csdn.net/m0_61465701/article/details/122484039


詳細(xì)代碼如下:

import java.util.Scanner;

public class Main {

? ? public static void main(String[] args) {

? ? ? ? Scanner sc = new Scanner(System.in);

? ? ? int t=sc.nextInt();boolean flag=true;int count=0;long sum=0;

? ? ? ? while(flag){

? ? ? ? ? ? long n=sc.nextLong();

? ? ? ? ? ? sum=n*(n+1)/2+1;

? ? ? ? ? ? System.out.println(sum);

? ? ? ? ? ? count++;

? ? ? ? ? ? if(count==t) flag=false;

? ? ? ? }

? ? }

}


選擇排序:

代碼如下:

<script>

? ? let arr=[2,6,1,77,52,25,7];

? ? for(let i=0;i<arr.length;i++){

? ? ? for(let j=i+1;j<arr.length;j++){

? ? ? ? if(arr[i]>arr[j]){

? ? ? ? ? let mid =arr[i];

? ? ? ? ? arr[i]=arr[j];

? ? ? ? ? arr[j]=mid;

? ? ? ? }

? ? ? }

? ? }

? ? document.write(arr);

? </script>

就上述代碼為例:

與冒泡排序進(jìn)行類比,其本質(zhì)含義相同的。i可以當(dāng)作循環(huán)的趟數(shù)來(lái)理解。

當(dāng)i==0時(shí),j 此時(shí)從索引1開(kāi)始與arr[0]進(jìn)行比較(索引0開(kāi)始到結(jié)束),如果有比前一個(gè)大數(shù)值,則進(jìn)行交換位置,目的把最小值往前放,一趟下來(lái),數(shù)組的第一個(gè)值已經(jīng)確定好了。依次進(jìn)行下一趟,直到進(jìn)行最后一個(gè)數(shù)也排好。(注:第二個(gè)for循環(huán)的j=i+1是核心的步驟)

此處的j解釋為位于下標(biāo)i元素后的元素的下標(biāo)。當(dāng)進(jìn)行每一趟冒泡循環(huán)時(shí),取出的目標(biāo)元素總是要拿去與其后的每一個(gè)元素進(jìn)行比較(例如,i=0時(shí)下標(biāo)為0的元素為目標(biāo)元素拿出,將其與下標(biāo)為1-9的元素進(jìn)行比較),所以j的起始值為i+1.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容