輸入:20
3
2
3
14
期望輸出:14
實際輸出:1
報錯:您的程式發生段錯誤,可能是陣列越界,堆疊溢位(比如,遞回呼叫層數太多)等情況引起
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int n;
int m;
char s[200][100000];
char N[200][100000];
main(){
scanf("%d",&n);
scanf("%d",&m);
int i;
for(i=0;i<m;i++){
scanf("%s",s[i]);
}
int j;
for(j=1;j<=n;j++){
sprintf(N[j-1],"%d",j);
}
int result=0;
int lucky;
int p,q;//遍歷s[i]和N[j]
for(j=0;j<n;j++){
int ln=strlen(N[j]);
lucky=0;
for(i=0;i<m;i++){
int ls=strlen(s[i]);
for(p=0;p<=ln-ls;p++){
int flag=1;
while(q<ls){
if(s[i][q]!=N[j][p+q]){
flag=0;
break;
}
}
if(flag)lucky++;
}
}
if(lucky=0)result++;
}
printf("%d",result);
}
uj5u.com熱心網友回復:
char s[200][100000];char N[200][100000];
這也太大了,用malloc/free,在堆上分配,就沒問題了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/124506.html
標籤:C語言
上一篇:在線等,急!!
