在浙大OJ系统提交1978题代码一直出现Segmentation Fault!!!!!!! 10C

在Linux环境里编译运行都成功。但是在ACM平台上提交代码时就一直出现Segmentation Fault 错误。自己的代码看了很久都没发现错误,运行又都是正确的。好烦躁。ACM所用的编译器时C(gcc 4.7.2)
题号1978。。有哪位大侠有时间可以修改然后拿去试试能不能AC。跪谢。。
#include
#include
typedef struct List{ //构造链表,代表参赛者的队列。
int i;
struct List *next;
}List;
void Select(List *head,int *nNumber);
int main(void)
{
int nNumber[1000];
int i=0,j,w;
List *q,*p;
List head;
q=(List *)malloc(sizeof(List));
head.next=q;
q->i=2;
printf("Sample Input\n");
do{
printf("请输入第%d个n值:",i+1);
scanf("%d",&nNumber[i]);
i++;
}while(nNumber[i-1]!=0);
for(j=3;j {
p=(List *)malloc(sizeof(List));
p->i=j;
q->next=p;
p->next=NULL;
q=p;
}
Select(&head,nNumber);//调用Select函数,返回只有幸运参赛者存在的链表
q=head.next;
for(j=0;j {
for(w=1;w {
q=q->next;
}
printf("%d\n",q->i);
q=head.next;
}
}
void Select(List *head,int *nNumber)//通过遍历链表,删除所有的需要打工的参赛者结点。
{
int i=0,max=nNumber[i],j;
List *q,*p,*q1;
p=head->next;
while(nNumber[i]!=0){
if(max max=nNumber[i];
i++;
}
for(j=0;j {
q=p;
while(q->next!=NULL)//开始循环删除
{
for(i=1;ii;i++)
{
if(q->next!=NULL)
q=q->next;
else break;
}
if(q->next==NULL)
break;
q1=q->next;
q->next=q1->next;
free(q1);
}
p=p->next;
}
}

2个回答

Segmentation Fault
说明你访问到了未分配的空间
可能你数组开小了
或者你访问到了已经被释放的空间了

对了,可以告诉你个技巧,你链表不需要自己写的
c++的stl库提供了List类,你可以直接用,用法可以去百度~

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在OJ上程序提交出现RE错误,求解答

在oj上进行训练的时候,提交程序出现RE错误,不知道为何,由于代码篇幅较长,请各位大佬移步这里 [程序提交出现RE错误](http://blog.csdn.net/weixin_39684284/article/details/77197272 "")

在oj系统中提交老是出现Runtime Error,怎么修改也不行,求指点

**__Description__** 给定两个字符串,将它们连接起来。不得使用strcat函数。 **Input** 测试数据有多组,第一行的正整数T表示测试数据的组数。每组有两个字符串,分别占两行,每个字符串不超过100个字符。 **Output** 对于每组测试数据,输出连接后的字符串,单独占一行。 **__Sample Input__** 2 abc 1234 xy oop **Sample Output** abc1234 xyoop ``` #include<stdio.h> #define M 100 int main() { char a1[M],a2[M]; int t,i1; scanf("%d",&t); for(i1=0;i1<t;i1++) { getchar(); int j=0; a1[j]=getchar(); while(a1[j]!='\n') { j++; a1[j]=getchar(); } static int i=0; a2[i]=getchar(); while((a1[j]=a2[i])!='\n') { i++,j++; a2[i]=getchar(); } a1[j]='\0'; for(j=0;a1[j]!='\0';j++) printf("%c",a1[j]); } return 0; } ```

为什么在VS2017上能正常运行而在OJ上面就Runtime Error:Segmentation fault呢?求助!!!

``` #include<iostream> #include<iomanip> #include<string> #include<queue> #include<vector> #include<stdlib.h> using namespace std; template<typename T> class TreeNode { public: T data; TreeNode<T> *leftChild; TreeNode<T> *rightChild; TreeNode(T data) { this->data = data; this->rightChild = NULL; this->rightChild = NULL; } }; template<typename T> class BinaryTree { private: TreeNode<T> *root; public: BinaryTree(T data); TreeNode<T>* getroot(); void InsertLeft(TreeNode<T> *p, T data); void InsertRight(TreeNode<T> *p, T data); TreeNode<T>* Search(TreeNode<T> *root, T data); void PreOrder(TreeNode<T> *root); void InOrder(TreeNode<T> *root); void PostOrder(TreeNode<T> *root); }; template<typename T> BinaryTree<T>::BinaryTree(T data) { TreeNode<T> *newnode = new TreeNode<T>(data); root = newnode; } template<typename T> TreeNode<T>* BinaryTree<T>::getroot() { return root; } template<typename T> void BinaryTree<T>::InsertLeft(TreeNode<T> *p, T data) { TreeNode<T> *newnode = new TreeNode<T>(data); newnode->leftChild = p->leftChild; p->leftChild = newnode; } template<typename T> void BinaryTree<T>::InsertRight(TreeNode<T> *p, T data) { TreeNode<T> *newnode = new TreeNode<T>(data); newnode->rightChild = p->rightChild; p->rightChild = newnode; } template<typename T> TreeNode<T>* BinaryTree<T>::Search(TreeNode<T> *root, T data) { queue<TreeNode<T>*> queue; TreeNode<T> *q = NULL; queue.push(root); while (!queue.empty()) { TreeNode<T> *p = queue.front(); queue.pop(); if (p->data == data) { q = p; } if (p->leftChild != NULL) { queue.push(p->leftChild); } if (p->rightChild != NULL) { queue.push(p->rightChild); } } return q; } template<typename T> void BinaryTree<T>::PreOrder(TreeNode<T>* root) { if (root != NULL) { cout << root->data; PreOrder(root->leftChild); PreOrder(root->rightChild); } } template<typename T> void BinaryTree<T>::InOrder(TreeNode<T> *root) { if (root != NULL) { InOrder(root->leftChild); cout << root->data; InOrder(root->rightChild); } } template<typename T> void BinaryTree<T>::PostOrder(TreeNode<T> *root) { if (root != NULL) { PostOrder(root->leftChild); PostOrder(root->rightChild); cout << root->data; } } int main() { string str; while (cin >> str) { BinaryTree<char> *bin = new BinaryTree<char>(str[0]); TreeNode<char> *root = bin->getroot(); for (int i = 1; i < str.length(); i++) { if (str[i] != '.') { TreeNode<char> *p = bin->Search(root, str[(i - 1) / 2]); if (i % 2 == 0) { bin->InsertRight(p, str[i]); } else { bin->InsertLeft(p, str[i]); } } } bin->PreOrder(root); cout << endl; } return 0; } ``` 测试数据 ABCDEFGHIJKL A.B...C.......D ABCD.EF.G T ABC.D.E..FG...H 输出 ABDHIEJKCFLG ABCD ABDGCEF T ABDFGCEH

在VS上运行没有问题,但提交oj出现段错误,在VS上该如何调试?

在VS上运行没有问题,但提交oj出现段错误,在VS上该如何调试?

代码在VC上运行正常,在OJ上运行失败

1.问题描述: 在一个暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。 好在许多牛正在度假,所以牛棚(牛棚的总数S:1<= S<=200)没有住满。 剩下的牛一个紧挨着另一个被排成一行安置在有屋顶的牛棚来过夜。 所以有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度,且宽度设为1。 因为有些门遗失,农民约翰需要架起新的木板作为门。 他的新木材供应者将会供应他任何他想要的长度,但是供应者只能提供有限数目的木板。 农民约翰想将他购买的木板总长度减到最少。 计算拦住所有有牛的牛棚所需木板的最小总长度。 输出所需木板的最小总长度作为的答案。 说明:拦住一个牛棚需要的木板长度为1,拦住相邻的三个牛棚则需要木板长度为3。 比如有牛的牛棚编号为: 3 5 8 10 11 并且只能使用两块木板, 则第一块木板从3到5,长度为3, 第二块木板从8到11,长度为4, 因此,需要木板的总长度为7。 2.输入说明: 第 1 行: M 和 C(用空格分开) 第 2 到 C+1行: 每行包含一个整数,表示牛所占的牛棚的编号。 其中: 可能买到的木板最大的数目:M(1<= M<=50); 需要安置的牛的数目C(1<= C <=S) 安置后牛所在的牛棚的编号stall_number(1<= stall_number <= S)。 3.自编代码 ``` int main(){ int m,c,t,n,min; int i,j,k=0; int s[201],a[120]; scanf("%d%d",&m,&c); for(i=0;i<=200;i++){ s[i]=0; } for(i=0;i<c;i++){ scanf("%d",&n); s[n]=1; } for(i=1;s[i]==0;i++); for(t=200;s[t]==0;t--); min=t-i+1; while(i<=t){//找出i到t内所有没有牛的位置长度 j=0; if(s[i]==0){ while(s[i+j]==0){ j++; } a[k++]=j; } i=i+j+1; } for(i=0;i<k-1;i++){//对位置长度进行从大到小排序 for(j=0;j<k-i-1;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } i=0; while(m>1 && i<k){ min=min-a[i]; m--; i++; } printf("%d\n",min); return 0; } ``` 4.运行结果: OJ上的结果: ![图片说明](https://img-ask.csdn.net/upload/202003/26/1585195124_271585.png) VC上的结果: ![图片说明](https://img-ask.csdn.net/upload/202003/26/1585195148_407920.png)

java代码有bug,在eclipse上可以运行,在oj系统上就有错误,但是只能运行一部分

![![图片说明](https://img-ask.csdn.net/upload/201811/07/1541569581_852187.jpg) 图片说明](https://img-ask.csdn.net/upload/201811/07/1541569572_510465.jpg) import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int N = sc.nextInt(); MultiValueMap<String, String> stringMultiValueMap = new LinkedMultiValueMap<>(); while (N-- > 0) { String id = sc.next(); String time = sc.next(); stringMultiValueMap.add(id, time); } Set<String> keySet = stringMultiValueMap.keySet(); for (String key : keySet) { List<String> values = stringMultiValueMap.getValues(key); if (values.size() < 6) continue; ArrayList<Integer> total_times = new ArrayList<>(); for (String value : values) { int h = Integer.parseInt(value.substring(0, 2)); int d = Integer.parseInt(value.substring(3, 5)); int s = Integer.parseInt(value.substring(6, 8)); int total_time = h * 3600 + d * 60 + s; total_times.add(total_time); } Collections.sort(total_times); if (check(total_times)) System.out.println(key); } } } private static boolean check(ArrayList<Integer> list) { for (int i = 0; i <= list.size() - 6; i++) { for (int j = i + 1; j < i + 6; j++) { if (Math.abs(list.get(i) - list.get(j)) >= 3600) return false; } } return true; } } interface MultiValueMap<K, V> { void add(K key, V value); void add(K key, List<V> values); void set(K key, V value); void set(K key, List<V> values); void set(Map<K, List<V>> values); List<V> remove(K key); void clear(); Set<K> keySet(); List<V> values(); V getValue(K key, int index); List<V> getValues(K key); int size(); boolean isEmpty(); boolean containsKey(K key); } class LinkedMultiValueMap<K, V> implements MultiValueMap<K, V> { protected Map<K, List<V>> mSource = new LinkedHashMap<K, List<V>>(); public LinkedMultiValueMap() { } @Override public void add(K key, V value) { if (key != null) { if (!mSource.containsKey(key)) mSource.put(key, new ArrayList<V>(2)); mSource.get(key).add(value); } } @Override public void add(K key, List<V> values) { for (V value : values) { add(key, value); } } @Override public void set(K key, V value) { mSource.remove(key); add(key, value); } @Override public void set(K key, List<V> values) { mSource.remove(key); add(key, values); } @Override public void set(Map<K, List<V>> map) { mSource.clear(); mSource.putAll(map); } @Override public List<V> remove(K key) { return mSource.remove(key); } @Override public void clear() { mSource.clear(); } @Override public Set<K> keySet() { return mSource.keySet(); } @Override public List<V> values() { List<V> allValues = new ArrayList<V>(); Set<K> keySet = mSource.keySet(); for (K key : keySet) { allValues.addAll(mSource.get(key)); } return allValues; } @Override public List<V> getValues(K key) { return mSource.get(key); } @Override public V getValue(K key, int index) { List<V> values = mSource.get(key); if (values != null && index < values.size()) return values.get(index); return null; } @Override public int size() { return mSource.size(); } @Override public boolean isEmpty() { return mSource.isEmpty(); } @Override public boolean containsKey(K key) { return mSource.containsKey(key); } }

oj的练习题:多输入输出练习1

请教大家一个问题: 题目是这样的: ![图片说明](https://img-ask.csdn.net/upload/202002/26/1582718661_948414.png) 我的代码是这样的: ``` #include<iostream> using namespace std; int main() { int i, j,a[3][10]; for (i = 0; i < 3; i++) { for (j = 0; ; j++) { cin >> a[i][j]; if (a[i][j] != 0) continue; else break; } } int max = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 10; j++) { if (max >= a[i][j]) continue; else max = a[i][j]; if (a[i][j] != 0) continue; else break; } cout << max << endl; max = 0; } return 0; } ``` 在vs上运行成功,但是oj上显示“答案错误”,可以帮我看看是什么问题吗? and 可以告诉我一点oj的技巧就更好了,我经常在vs上运行成功,但是oj过不了。

为什么这道题根据程序,样例可以正确输出,却不能在OJ上AC?是我的代码出问题了吗?

题目描述如下: ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577529512_755416.png) ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577529527_134470.png) 我的代码如下: ``` #include<stdio.h> int main() { int n,fin1,fin2; long a1=1,a2=1; char cx1,cx2; scanf("%d",&n); fflush(stdin); while((cx1=getchar())!='\n') { a1=a1*(cx1-64) /*计算出第一行的字母所代表的编号的乘积*/ } while((cx2=getchar())!='\n') { a2=a2*(cx2-64);/*计算出第二行的字母所代表的编号的乘积*/ } fin1=a1%n; /*用第一行的乘积取模*/ fin2=a2%n; /*用第二行的乘积取模*/ if(fin1==fin2) { printf("Attack!\n"); } else { printf("Stay\n"); } return 0; } ``` 自己测试了几组数据,都没有问题的,可是AC不了。来向各位大佬求助!

杭电oj第一题居然一直过不了

#include "stdio.h" int main() { int a,b; scanf("%d%d",&a,&b); printf("%d\n",a+b); return 0; } 运行不是好好的吗,怎么总是过不了

请问一下这段代码提交到OJ平台为何报错RE?

纯小白,写代码不过几个月,不知道下面这段代码提交到OJ平台为何提示RE,有什么修改的措施吗? OJ平台的提示信息是:LinuxExecutorSeccomp.cpp(219): terminate signal: SIGSEGV 请问有什么办法补救吗?或者能否推荐一个好的编译平台以供自行检验错误呢?学校一直使用的是DEV-C++。 代码如下: ``` #include<stdio.h> #include<string.h> void compare(char a[],char b[]) { char t[1000]; memset(t,0,sizeof(t)); for(int i=0;i<1000;i++){ if(strcmp(a,b)<0){ strcpy(t,a); strcpy(a,b); strcpy(b,t); return; } } return; } int main(){ char a[1000][55],ch; int count[1000]={0}; int jj[1000]={0}; int n=0,m=0; memset(a,0,sizeof(a)); while((ch=getchar())!='\n'){ if(ch==' '){ m++; n=0; continue; } a[m][n++]=ch; } int i=0; for(i=0;i<=m;i++){ for(int j=0;j<=m-1;j++){ compare(a[j],a[j+1]); } } int e=1; for(i=0;i<=m;i++){ count[i]=1; for(int j=m;j>i;j--){ if(strcmp(a[i],a[j])==0){ count[i]++; } } } for(i=0;i<=m;i++){ for(int j=m;j>i;j--){ if(strcmp(a[i],a[j])==0){ jj[e++]=j; } } } int t=m+1; while(t>0){ t--; while(t>0&& a[t]==0)t--; int h=1; while(h<=e){ while(t>0&& t==jj[h]){ t--; h=0; } h++; } printf("%s %d\n",a[t],count[t]); } return 0; } ```

在牛客网oj上的一道题,本地测试正确,在网上怎么也不对,求解答(北理研究生复试题,学生查询问题)

**编程问题:** 题目描述 输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。<br /> 输入描述:<br /> 测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),接下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。<br /> 输出描述:<br /> 输出m行,每行表示查询的学生信息,格式参见样例。<br /> 示例1<br /> 输入<br /> 1<br /> 4<br /> 1 李江 男 21<br /> 2 刘唐 男 23<br /> 3 张军 男 19<br /> 4 王娜 女 19<br /> 2<br /> 输出<br /> 2 刘唐 男 23<br /> **我的代码: ** ``` #include<iostream> #include <stdio.h> using namespace std; int N;//学生数目 int Circle; //循环轮数 char data[100][100]; int searchN; //需要查询的id int main() { cin>>Circle; for(int j=0;j<Circle;j++){ int m; cin>>N; for(int i=0; i<N; i++) { fflush(stdin); //在前面添加清空缓冲区 cin.getline(data[i],1024); } cin>>searchN; for(int i=0; i<N; i++) { if(data[i][0]-'0'==searchN) { printf("%s", data[i]); } } } } ``` 网上oj的结果是一个样例也不通过...wsl,求大佬解答<br /> **本地测试截图:**<br /> ![图片说明](https://img-ask.csdn.net/upload/201906/07/1559921966_766126.png) **在线测试截图: **<br /> ![图片说明](https://img-ask.csdn.net/upload/201906/07/1559922007_423730.png)<br /> 求助,大家看一下我的代码有哪里可能被判错的地方吗??

杭电oj 2014题 代码不对 不知道哪里错了

偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 65195 Accepted Submission(s): 27929 Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。 Input 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。 Output 对于每组输入数据,输出一个平均值序列,每组输出占一行。 Sample Input 3 2 4 2 Sample Output 3 6 3 7 我的代码 #include "stdio.h" int main() { int n,m,sum=0,i,j=0; while( scanf("%d%d",&n,&m)!=EOF ) { for( i=1; i<=n; i++ ) { j++; sum=sum+i; if( j%m==0 ) { printf("%d ",sum); sum=0; } } printf("%d\n",sum); } }

老哥们,这个程序在编译器上可以运行并能得到正确答案,可提交OJ却编译错误,自己找不出哪不对

![图片说明](https://img-ask.csdn.net/upload/201707/30/1501381331_963161.png) 问题链接http://acm.hdu.edu.cn/showproblem.php?pid=2124

为什么一道简单的oj题一直wa啊,我人傻了,哪个大佬帮瞅两眼呗。

题目如下 ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572964362_10495.png) 就是找数字,能被7除不能被4除,还要尽可能小。 我的代码: ``` #include<stdio.h> #include<stdlib.h> #include<iostream> //#pragma warning(disable:) using namespace std; int is(float m) { if (((int)m) == m) return 1; else return 0; } int lucky(float m) { if ((is(m / 7))==1 && (is(m / 4))==0) { return (int)m; } float p = ((int)(m / 7))+1.0f; while (is((p*7)/4)) { p++; } if (p > 14) { return (int)m; } return (int)p * 7; } int main() { int num =0, m = 1, intput[110] = { 0 },output[110] = {0}; cin >> num; intput[0] = num; while (num>=1) { cin >> intput[m]; output[m-1] = lucky(intput[m]); num--; m++; } num = m-1; m = 0; while (m < num) { cout << output[m] << endl; m++; } system("pause"); return 0; } ``` 输入和输出的方式改了又改,一直wa,很烦,谁能指点下啊,感谢感谢 ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572964783_692874.png) 这是程序运行结果截图

新手求问,,,,,为什么oj一直过不去

新手,,,,为什么oj总是一直不过,,, 和网上正确代码对比了一样的输入对应输出一模一样。。可为什么oj不过呢 http://cxsjsx.openjudge.cn/2015warpractice/A/ ``` #include <iostream> using namespace std; #include <math.h> #include <string> #include <assert.h> #include <limits.h> #define N 1000 char _time[5]; enum Warrior { dragon, ninja, iceman , lion, wolf }; const string name_table[5] = { "dragon", "ninja", "iceman", "lion", "wolf" }; const int next_warrior_table_1[5] = { 2,0,3,4,1 }; const int next_warrior_table_2[5] = { 1,2,4,0,3 }; void print_time(int time) { if (time <= 9) { _time[0] = time + '0'; _time[1] = '0'; _time[2] = '0'; for (int i = 2; i >= 0; i--) printf("%c", _time[i]); } else if (time <= 99) { _time[0] = time % 10 + '0'; _time[1] = (time / 10) + '0'; _time[2] = '0'; for (int i = 2; i >= 0; i--) printf("%c", _time[i]); } else if (time <= 999){ _time[0] = time % 10 + '0'; _time[1] = (time / 10) % 10 + '0'; _time[2] = (time / 100) + '0'; for (int i = 2; i >= 0; i--) printf("%c", _time[i]); } else if (time <= 9999) { _time[0] = time % 10 + '0'; _time[1] = (time / 10) % 10 + '0'; _time[2] = (time / 100) % 10 + '0'; _time[3] = (time / 1000) + '0'; for (int i = 3; i >= 0; i--) printf("%c", _time[i]); } else { _time[0] = time % 10 + '0'; _time[1] = (time / 10) % 10 + '0'; _time[2] = (time / 100) % 10 + '0'; _time[3] = (time / 1000) % 10 + '0'; _time[4] = (time / 10000) + '0'; for (int i = 4; i >= 0; i--) printf("%c", _time[i]); } } int main() { int n, M1, M2, time; bool run1, run2; int warrior_total_1, warrior_total_2; int warrior_num_1[5], warrior_num_2[5]; int next_warrior_1, next_warrior_2; int lifepoint_table[5]; cin >> n; for (int k = 1; k <= n; k++) { cin >> M1; M2 = M1; time = 0; run1 = run2 = true; warrior_total_1 = warrior_total_2 = 0; for (int i = 0; i < 5; i++) warrior_num_1[i] = warrior_num_2[i] = 0; next_warrior_1 = 2; next_warrior_2 = 3; for (int i = 0; i < 5; i++) cin >> lifepoint_table[i]; printf("Case:%d\n", k); for (; run1 || run2; time++) { if (run1) { if (M1 - lifepoint_table[next_warrior_1] < 0) { int i = 1; for (; i <= 4; i++) { next_warrior_1 = next_warrior_table_1[next_warrior_1]; if (M1 - lifepoint_table[next_warrior_1] >= 0) break; } if (i == 5) { print_time(time); printf(" red headquarter stops making warriors\n"); run1 = false; } } if (run1) { M1 -= lifepoint_table[next_warrior_1]; warrior_total_1++; warrior_num_1[next_warrior_1]++; print_time(time); printf(" red %s %d born with strengh %d,%d %s in red headquarter\n", name_table[next_warrior_1].c_str(), warrior_total_1, lifepoint_table[next_warrior_1], warrior_num_1[next_warrior_1], name_table[next_warrior_1].c_str()); next_warrior_1 = next_warrior_table_1[next_warrior_1]; //printf("%d : %d %d %d %d %d\n", time, warrior_num_1[0], warrior_num_1[1], warrior_num_1[2] // , warrior_num_1[3], warrior_num_1[4], warrior_num_1[5]); } } if (run2) { if (M2 - lifepoint_table[next_warrior_2] < 0) { int i = 0; for (; i <= 4; i++) { next_warrior_2 = next_warrior_table_2[next_warrior_2]; if (M2 - lifepoint_table[next_warrior_2] >= 0) break; } if (i == 5) { run2 = false; print_time(time); printf(" blue headquarter stops making warriors\n"); } } if (run2) { M2 -= lifepoint_table[next_warrior_2]; warrior_total_2++; warrior_num_2[next_warrior_2]++; print_time(time); printf(" blue %s %d born with strengh %d,%d %s in blue headquarter\n", name_table[next_warrior_2].c_str(), warrior_total_2, lifepoint_table[next_warrior_2], warrior_num_2[next_warrior_2], name_table[next_warrior_2].c_str()); next_warrior_2 = next_warrior_table_2[next_warrior_2]; //printf("%d : %d %d %d %d %d\n", time, warrior_num_2[0], warrior_num_2[1], warrior_num_2[2] // , warrior_num_2[3], warrior_num_2[4], warrior_num_2[5]); } } } } } ```

这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗?

这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗? #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 1000 //对字符串进行拆分 void split(char shou[MAX],char flag[26][MAX][20],int num[26]){ //遍历整个数组 int i = 0; for(i = 0;i < 26;i++){ num[i] = 0; } char *p; char *q; p = q = shou;//初始化指针,使其指向shou的头部 while(*p){ if((*p >= 'a'&&*p <= 'z')||(*p >= 'A'&&*p <= 'Z')){ q = p; while((*p >= 'a'&&*p <= 'z')||(*p >= 'A'&&*p <= 'Z')){ if(*p >= 'A'&&*p <= 'Z'){ *p += 32; } p++; } int x = *q - 97;//得到应该储存的flag中的位置 strncpy(flag[x][num[x]],q,p-q);//实现复制操作 num[x] += 1; }else{ p++; } } } int comp(const void *a,const void *b) { // return *(char **)a - *(char **)b; return strcmp((char *)a,(char *)b) ; //字典序从小到大 } int main(){ //先想办法读入数组 char flag[26][MAX][20];//用flag做标志,省去排序的步骤 char shou[MAX]; int num[26];//用于储存每一个单词表里面存储的单词的数量 // gets(shou);//先将字符串读进来 //怎么把gets做一个替换 int m = 0; char ch; while((ch = getchar()) != EOF){ shou[m] = ch; m++; } split(shou,flag,num); int i,j,k; int count = 0; //找出其中num[i]不为零的总数量 for(i = 0;i < 26;i++){ if(num[i] != 0) count++; } for(i = 0;i < 26;i++){ if(num[i] != 0){ qsort(flag[i],num[i],sizeof(flag[i][0]),comp); //利用qsort函数进行快排 count--; printf("%c:",i + 65); for(j = 0;j < num[i];j++){ if(strcmp(flag[i][j+1],flag[i][j]) != 0){ printf(" %s",flag[i][j]); } } if(count!=0) printf("\n"); } } return 0; } 就是一个文本索引的题目,要求按字典排序,然后对于空格和换行有点特殊要求。

OJ超时的编程题求优化

#include <iostream> #include <string.h> using namespace std; class stack { private: int* elements; int top; int maxsize; public: stack(int sz=100) { maxsize=sz; top=-1; elements=new int [maxsize]; if(elements==NULL) cout<<"error"; } void overflowprocess() { int * newarray=new int [maxsize+20]; if(newarray==NULL) { cout<<"error"<<endl; } for(int i=0;i<=top;i++) newarray [i]=elements[i]; delete[]elements; elements=newarray; } bool isempty() { return (top==-1)?true:false; } bool pop(int &x) { if(isempty()==true) return false; x=elements[top--]; return true; } bool isfull() { return (top==maxsize-1)?true:false; } void push(int &x) { if(isfull()==true) overflowprocess(); elements[++top]=x; } }; void match( char *ex) { stack s; int j=0,i,t=0,a=0,b=0,z; int length=strlen(ex); for(int i=1;i<length;i++) { if(ex[i-1]=='('||ex[i-1]=='['||ex[i-1]=='<') s.push(i); else if(ex[i]==')'||ex[i]==']'||ex[i]=='>') { if(s.pop(j)==true ) { z=j-1; if(ex[i]==')') t+=i-j; if(ex[i]==']') a+=i-j; if(ex[i]=='>') b+=i-j; for(int k=i+1;ex[k]!='\0';k++) { ex[j-1]=ex[k]; j++; } i=z; } } } cout<<t<<" "<<a<<" "<<b<<" "<<endl; } int main() { int T; cin>>T; while(T--) { char a[100]; cin>>a; match(a); } return 0; }

(c语言的)为什么oj平台一直显示运行时错误?

![图片说明](https://img-ask.csdn.net/upload/201905/11/1557571560_864025.png) ``` #include<stdio.h> int myStrLen(char *s); void myStrConcat(char *string1, char *string2); int main() { int n, i, a, b, c[10]; char s[10][41]; scanf("%d %d %d", &n, &a, &b); for (i = 0; i < n; i++) scanf("%d", &c[i]); for (i = 0; i < n; i++) scanf("%s", s[i]); myStrConcat(s[a], s[b]); for (i = 0; i < n; i++) { printf("%d", myStrLen(s[i])); if (s[i + 1]) printf(" "); } printf("\n"); for (i = 0; i < n; i++) { printf("%s", s[c[i]]); if (i < n - 1) printf("\n"); } return 0; } int myStrLen(char *s) { int i; for (i = 0; s[i]; i++) { } return i; } void myStrConcat(char *string1, char *string2) { int i = 0, j = 0; while (string1[i] != '\0') i++; while (string2[j] != '\0') string1[i++] = string2[j++]; string1[i] = '\0'; } ```

这个代码提交到oj为什么时间超限?

![图片说明](https://img-ask.csdn.net/upload/202004/02/1585800487_582987.png) ``` #include <stdio.h> int main() { char y; int sum = 0; int a; do { scanf_s("%d", &a); sum += a; } while (y = getchar() != '\n'); printf("%d", sum); return 0; } ```

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

立即提问
相关内容推荐