① 請教一道杭電oj 2017的編程題,請教高手來解答啊
/*
杭電oj 2017的編程題
*/
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)//n 字元串個數
{ char a[100][1000];
//下一步改正
char (*p)[1000]=&a[0];//指向一維數組的char型指針變數
int cout[1000]={0};
for(i=0;i<n;i++)
{
gets(a[i]);//n 個字元串
}
for(i=0;i<n;i++)
{
for(j=0;j<strlen(a[i]);j++)
{
if( *(*(p+i)+j) <='9' && *(*(p+i)+j) >='0' )
{
cout[i]++;
}
}
}
for(i=0;i<n;i++)
{
printf("%d\n",cout[i]);
}
}
return 0;
}
② 大家幫看一下OJ上的一道C語言的題。謝謝!!
在s[j 1]=s[i];語句後加語句j ;我只看出這一點,如果不對,見諒!Helloyujingping2009,希望有幫助.更多到軟體測試基地,365testing泡泡
③ 南陽理工OJ第一題A+B problem 用java編程在eclipse上能運行正確,為什麼在OJ上提交時總是CompileError!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a + b);
}
}
用這個試試
④ C語言 OJ系統題目
那麼問題在於:
1 . 輸入的是整數,沒說明是正整數,所以說輸入的可能是-100,那麼上述代碼就有邏輯問題。
2. i和N的值應該在while循環裡面從新賦值為i=1,N=0。否則隨著迭代的增加,i和N就會是上次計算的值了。
#include<stdio.h>
int main()
{
int i=1,n,N=0;
while((scanf("%d",&n))!=EOF)
{
i=1, N=0;
if(n>=1)
{
while(i<=n)
{
N=N+i;
i++;
}
}
else{ // n為負數,不是要continue,而也是要計算。比如n=-2,就計算1+0+(-1)+(-2)
while(i>=n)
{
N=N+i;
i--;
}
}
printf("%d\n",N);
}
return 0;
}
⑤ 關於C語言OJ的一道題:Time Limit Exceeded
調試了一下你的代碼
有兩個問題:
如果ori字元串本身比pat短,是不需要匹配的,直接結果0
如果已經有i個字元匹配,測試第4組數是,pat從頭開始匹配,而實際上是從pat下標為3的地方開始匹配
最後,代碼太多邏輯判斷影響速度,附KMP函數代碼
intKMP(char*ori,char*pat)
{
char*temp,*p;
intnum=strlen(pat);
inti=0,j=0;
int*next;
intsum=0;
//求出next數組
next=(int*)malloc((num+1)*sizeof(int));
memset((int*)next,0,(num+1)*sizeof(int));
p=temp=pat;
pat++;
while(*pat)
{
if(*pat==*temp)
{
*(next+i+2)=j+1;
pat++;
temp++;
j++;
}
else
{
pat++;
j=0;
}
i++;
}
//匹配字元串
pat=p;
i=0;
while(*ori)
{
if(strlen(ori)<strlen(pat))
break;
if(*ori==*pat)
{
ori++;
pat++;
i++;
if(*pat=='