五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

分享到微博請遵守國家法律
开原市| 左贡县| 瑞安市| 军事| 汾阳市| 连云港市| 通江县| 江陵县| 长宁区| 东莞市| 嘉定区| 即墨市| 普安县| 德化县| 宁陵县| 元氏县| 岑溪市| 太和县| 阿瓦提县| 邵阳县| 始兴县| 安溪县| 汉川市| 安远县| 江达县| 南岸区| 通化县| 芮城县| 陆川县| 西藏| 临沂市| 高碑店市| 望城县| 疏勒县| 平邑县| 聂荣县| 鹿邑县| 陈巴尔虎旗| 海晏县| 黔江区| 永顺县|