最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《編程思維與實踐》1035.求和

2023-04-09 17:18 作者:風淺葉墨  | 我要投稿

題目

思路

注意的點:

1.子數(shù)組的下標從1開始,開內(nèi)存時方便起見可以多開一個內(nèi)存;

2.L和U的元素和可能因為可能情況眾多而導(dǎo)致超過int范圍,應(yīng)用longlong存儲.

優(yōu)化:

代碼

無優(yōu)化:

#include<stdio.h>
#include<stdlib.h>

int?cmp(const?void?*a,const?void?*b)??//升序
{
????return?*((int*)a)-*((int*)b);
}

int?main()
{
????int?T;
????scanf("%d",&T);
????for(int?i=0;i<T;i++)
????{
????????int?n,m;
????????scanf("%d?%d",&n,&m);
????????int?number[n];
????????for(int?j=0;j<n;j++)?????????
????????{
????????????scanf("%d",&number[j]);
????????}
????????int?tab[n*(n+1)/2+1];???//子數(shù)組
????????for(int?j=0;j<n*(n+1)/2+1;j++)??//初始化
????????{
????????????tab[j]=0;
????????}
????????int?p=1;?????????//下標從1開始
????????for(int?j=0;j<n;j++)???//確定首元素??
????????{
????????????for(int?k=1;k<=n-j;k++)????//子數(shù)組的元素個數(shù)有可能為1,2...n-j
????????????{
????????????????for(int?m=0;m<k;m++)??//求和
????????????????{
????????????????????tab[p]+=number[j+m];
????????????????}
????????????????p++;
????????????}
????????}??????????????
????????qsort(tab,n*(n+1)/2+1,sizeof(int),cmp);?????
????????printf("case?#%d:\n",i);
????????for(int?j=0;j<m;j++)
????????{
????????????int?L,U;
????????????scanf("%d?%d",&L,&U);
????????????long?long?count=0;???//求L和U之間元素和??可能會超過int范圍
????????????for(int?k=L;k<=U;k++)
????????????{
????????????????count+=tab[k];????
????????????}
????????????printf("%lld\n",count);
????????}
????}?
????return?0;
}

優(yōu)化:

#include<stdio.h>
#include<stdlib.h>

int?cmp(const?void?*a,const?void?*b)??//升序
{
????return?*((int*)a)-*((int*)b);
}

int?main()
{
????int?T;
????scanf("%d",&T);
????for(int?i=0;i<T;i++)
????{
????????int?n,m;
????????scanf("%d?%d",&n,&m);
????????int?number[n];
????????for(int?j=0;j<n;j++)?????????
????????{
????????????scanf("%d",&number[j]);
????????}
????????int?tab[n*(n+1)/2+1];???//子數(shù)組
????????for(int?j=0;j<n*(n+1)/2+1;j++)??//初始化
????????{
????????????tab[j]=0;
????????}
????????int?p=1;?????????//下標從1開始
????????for(int?j=0;j<n;j++)???//確定首元素??
????????{
????????????for(int?k=1;k<=n-j;k++)????//子數(shù)組的元素個數(shù)有可能為1,2...n-j
????????????{
????????????????for(int?m=0;m<k;m++)??//求和
????????????????{
????????????????????tab[p]+=number[j+m];
????????????????}
????????????????p++;
????????????}
????????}??????????????
????????qsort(tab,n*(n+1)/2+1,sizeof(int),cmp);?????
????????long?long?count[n*(n+1)/2+1];
????????count[1]=tab[1];
????????for(int?j=2;j<n*(n+1)/2+1;j++)
????????{
????????????count[j]=count[j-1]+tab[j];
????????}
????????printf("case?#%d:\n",i);
????????for(int?j=0;j<m;j++)
????????{
????????????int?L,U;
????????????scanf("%d?%d",&L,&U);
????????????printf("%lld\n",count[U]-count[L-1]);??//注意是L-1
????????}
????}?
????return?0;
}


《編程思維與實踐》1035.求和的評論 (共 條)

分享到微博請遵守國家法律
黔南| 清丰县| 江北区| 漯河市| 邹城市| 呼和浩特市| 昔阳县| 莱芜市| 三台县| 渭源县| 伊金霍洛旗| 合阳县| 稷山县| 洪湖市| 炉霍县| 永清县| 泸溪县| 格尔木市| 平果县| 西青区| 顺昌县| 南木林县| 德惠市| 玉林市| 宝鸡市| 城市| 灯塔市| 龙海市| 来凤县| 海南省| 兰考县| 河池市| 射洪县| 临夏县| 台中市| 永康市| 南陵县| 根河市| 海淀区| 秦安县| 江安县|