『壹』 我想問一下我這個c語言程序為什麼運行超時!需要怎麼樣修改呢
#include<stdio.h>
#include<stdlib.h>
/*
Name:
Copyright:
Author:
Date:28/01/1421:12
Description:
有n個格子,從左到右放成一排,編號為1-n。
共有m次操作,有3種操作類型:
1.修改一個格子的權值,
2.求連續一段格子權值和,
3.求連續一段格子的最大值。
對於每個2、3操作輸出你所求出的結果。
輸入格式
第一行2個整數n,m。
接下來一行n個整數表示n個格子的初始權值。
接下來m行,每行3個整數p,x,y,p表示操作類型,p=1時表示修改格子x的權值為y,p=2時表示求區間[x,y]內格子權值和,p=3時表示求區間[x,y]內格子最大的權值。
輸出格式
有若干行,行數等於p=2或3的操作總數。
每行1個整數,對應了每個p=2或3操作的結果。
樣例輸入
43
1234
213
143
314
樣例輸出
6
3
數據規模與約定
對於20%的數據n<=100,m<=200。
對於50%的數據n<=5000,m<=5000。
對於100%的數據1<=n<=100000,m<=100000,0<=格子權值<=10000。
*/
typedefstructm0
{
intp;
intx;
inty;
}h;
intmain()
{
intn,m,i,*q=NULL,j,sum;
h*mm=NULL;
printf("輸入第一組參數:nm
n表示有多少個數據
m表示接下來m行的輸入參數pxy。 ");
scanf("%d%d",&n,&m);
q=(int*)malloc(sizeof(int)*n);//hanson--為初始數據分配單元
if(q==NULL){
printf("memoryallocateerror. ");
}
//加入判斷
mm=(h*)malloc(sizeof(h)*m);//hanson--為m行的輸入數據分配單元
//加入判斷
if(mm==NULL){
printf("memoryallocateerror. ");
}
for(i=0;i<n;i++){
printf("輸入第%d個數: ",i+1);
scanf("%d",&q[i]);
}
//debug
for(i=0;i<n;i++){
printf("%10d",q[i]);
if((i+1)%5==0){
printf(" ");
}
}
//debugend
printf(" 命令格式:pxy
p:1修改數據,x數據是y
2求xy之間的和
3求xy之間的最大值 ");
printf(" 共有%d條命令 ",m);
for(i=0;i<m;i++){
printf("輸入第%d條命令 ",i+1);
scanf("%d%d%d",&(mm[i].p),&(mm[i].x),&(mm[i].y));
}
for(i=0;i<m;i++)
{
sum=0;
switch(mm[i].p)//hanson--命令
{
case1:
q[mm[i].x-1]=mm[i].y;
break;
case2:
//sum清零==在這里清零==而不是上面
sum=0;//hanson
for(j=mm[i].x-1;j<=mm[i].y-1;j++)
sum+=q[j];
printf("%d ",sum);
break;
case3:
sum=q[mm[i].x-1];
for(j=mm[i].x-1;j<=mm[i].y-1;j++)
if(sum<q[j])
sum=q[j];
printf("%d ",sum);
break;
}
}
getchar();
getchar();
return0;
}
1、有幾個小問題,幫你修改了,你看下。有注釋
2、哪裡超時?==調試內容是什麼?
『貳』 c語言問題,運行時怎麼顯示超時了
按照操作系統中的說法,它給每一個進程都設定了時間的上限,超過一定的時間後就會報錯,所以,可能是你寫的程序裡面演算法使用的循環次數太多,或者是你的代碼裡面出現一些因為打字錯誤而導致的死循環(我以前經常犯這種錯誤)。總之,仔細檢查你的代碼,興許可以發現錯哪兒了。
#include<stdio.h>
int main()
{ int highapple[10];
int hightt;
int i,t=0;
for(i=0;i<10;i++)
{
scanf("%d%c",&highapple[i]);
}
scanf("%d",&hightt);
for (i=0;i<10;i++)
{
if(highapple[i]<=hightt+30)
{
t++;
}
}
printf("%d",t);
return 0;
if(highapple[i]<100&&highapple[i]>200&&hightt>120&&hightt<100)
{
return 0;
}
}
『叄』 我這C語言為什麼超時 啊 要怎麼改
求余是一個挺耗時的操作,我不知道你寫的是什麼題目,建議少用求余,當數字大,循環多的時候,求余挺耗時的,你可以考慮換一下思路
『肆』 C語言什麼情況下會出現超時
如果題目要求m==0時結束循環
你的
while(scanf("%d %d",&m,&n)&& m!=0)
可能不行
應該先讀一個m
判斷後再讀n
你這樣的話假設數據最後就只有一個m
你的程序就一直等著讀完n後才判斷m
『伍』 c語言運行超時,求優化
int com_yi_func(int x)
{
int y;
if(x<1)y=x;
else if(x<10)y=2*x-1;
else y=3*x-11;
return y;
}
說明:
1、x是由參數引入,不用再輸入數字了;
2、返回值是y,不用列印y的值。
『陸』 為什麼這個C語言程序會運行超時,怎麼改進
代碼段中的
while(m%b!=0)
b++;
if(m==b)
printf("%5d",m),c++;
改為
for(;b*b<=m;++b)
if(m%b==0)
break;
if(b*b>m)
{printf("%5d",m),c++;}
『柒』 c語言程序超時問題
把scanf("%d%d",&a,&b); 改為 scanf("%d %d",&a,&b);
試試~