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

歡迎光臨散文網(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.求和的評論 (共 條)

分享到微博請遵守國家法律
全南县| 那坡县| 安溪县| 西盟| 甘肃省| 吐鲁番市| 汉阴县| 色达县| 浏阳市| 鹤山市| 新建县| 怀来县| 晋宁县| 龙口市| 张家川| 台山市| 罗平县| 商丘市| 缙云县| 三都| 浮梁县| 托里县| 孟州市| 教育| 竹山县| 收藏| 历史| 大渡口区| 交口县| 辽宁省| 耒阳市| 花莲市| 清流县| 玉环县| 剑阁县| 拜城县| 沧州市| 伊金霍洛旗| 满洲里市| 定南县| 大宁县|