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

编程问题:
题目描述
输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。

输入描述:

测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),接下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。

输出描述:

输出m行,每行表示查询的学生信息,格式参见样例。

示例1

输入

1

4

1 李江 男 21

2 刘唐 男 23

3 张军 男 19

4 王娜 女 19

2

输出

2 刘唐 男 23

**我的代码:
**

#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,求大佬解答

本地测试截图:

图片说明

**在线测试截图:
**

图片说明

求助,大家看一下我的代码有哪里可能被判错的地方吗??

3个回答

学号可能是两位数吧,你只考虑了一位数,试着把第一个空格前的字符转化为int,再与serchN比较

weixin_41900122
爱编程的早起虫 我是忘了考虑这个方面,我试一下
7 个月之前 回复

乍一看,可能是需要把你声明的那四个全局变量 包含到main函数中吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
OJ上一道字母大小写转换的题
OJ上的一道题,题目是:cAPS lOCK ![图片说明](https://img-ask.csdn.net/upload/201507/19/1437277235_164047.png) 我写的代码链接:http://codepad.org/JrJrOGxQ 自己在编译器上编译时 没发现有什么错,但是在OJ上提交时出现:wrong answer on test 6 不知道哪里错了
为什么这道题根据程序,样例可以正确输出,却不能在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不了。来向各位大佬求助!
关于C语言OJ的一道题:Time Limit Exceeded
hihoCoder上的一道关于KMP算法的一道题,题目描述如下: #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原串)里面是不是存在那么一些……特殊……的文字(模式串)?” 小Hi和小Ho仔细思考了一下,觉得只能想到很简单的做法,但是又觉得既然河蟹先生这么说了,就肯定不会这么容易的让他们回答了,于是他们只能说道:“抱歉,河蟹先生,我们只能想到时间复杂度为(文本长度 * 特殊文字总长度)的方法,即对于每个模式串分开判断,然后依次枚举起始位置并检查是否能够匹配,但是这不是您想要的方法是吧?” 河蟹点了点头,说道:”看来你们的水平还有待提高,这样吧,如果我说只有一个特殊文字,你能不能做到呢?“ 小Ho这时候还有点晕晕乎乎的,但是小Hi很快开口道:”我知道!这就是一个很经典的模式匹配问题!可以使用KMP算法进行求解!“ 河蟹满意的点了点头,对小Hi说道:”既然你知道就好办了,你去把小Ho教会,下周我有重要的任务交给你们!“ ”保证完成任务!”小Hi点头道。 提示一:KMP的思路 提示二:NEXT数组的使用 提示三:如何求解NEXT数组 输入 第一行一个整数N,表示测试数据组数。 接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不超过10^6个大写字母组成。 其中N<=20 输出 对于每一个测试数据,按照它们在输入中出现的顺序输出一行Ans,表示模式串在原串中出现的次数。 样例输入 5 HA HAHAHA WQN WQN ADA ADADADA BABABB BABABABABABABABABB DAD ADDAADAADDAAADAAD 样例输出 3 1 3 1 0 这是我按照自己的理解提交的代码: #include<stdio.h> #include<string.h> #include<stdlib.h> int KMP(char *ori,char *pat); int main(void) { char *ori,strori[10001]; char *pat,strpat[1000001]; int n;//测试组数 pat=strpat;//必须初始化 有所指向才行 ori=strori; scanf("%d\n",&n); while(n--) { scanf("%s",pat); scanf("%s",ori); printf("%d\n",KMP(ori,pat)); } return 0; } int KMP(char *ori,char *pat) { char *temp,*p; int num=strlen(pat); int i=0,j=0; int *next; int sum=0; //求出next数组 next=(int *)malloc(num*sizeof(int)); memset((int *)next,0,num*sizeof(int)); p=temp=pat; pat++; while(*pat) { if(*pat==*temp) { *(next+i+1)=j+1; pat++; temp++; j++; } else { pat++; j=0; } i++; } //匹配字符串 pat=temp=p; i=j=0; while(*ori) { if(*ori!=*pat) { ori++; if(i!=0)//表明之前有匹配成功过,但还未完全匹配 { ori=ori-1-*(next+i-1);//ori=ori-i-1+(i-*(next+i-1)); pat=p; i=0; } } else { ori++; pat++; i++; if(*pat=='\0') { sum++; ori=ori-1-*(next+i-1); pat=p; i=0; } } } return sum; } 但每次提交结果都是: Time Limit Exceeded TLE 用户程序运行时间超过题目的限制 怎么优化一下我的代码才能是它AC啊?!求大神指导啊。
C++ 写了一个二叉排序树的小程序,在牛客网OJ报错,请教一下各位。
``` #include <iostream> #include <stack> #include <queue> using namespace std; struct Node{ int data; Node *lchild; Node *rchild; }; struct BST{ Node *root; void insert(int x){ if(root == NULL){ root = new Node; root->rchild=root->lchild=NULL; root->data = x; return; } Node *tmp = root; while(tmp!=NULL){ if(x<tmp->data){ if(tmp->lchild!=NULL) tmp = tmp->lchild; else{ tmp->lchild = new Node; tmp->lchild->rchild=tmp->lchild->lchild=NULL; tmp->lchild->data = x; return; } }else if(x>tmp->data){ if(tmp->rchild!=NULL) tmp = tmp->rchild; else{ tmp->rchild = new Node; tmp->rchild->rchild=tmp->rchild->lchild=NULL; tmp->rchild->data = x; return; } } else return; } } void PreOrder(){ if(root == NULL) return; Node *tmp=root; stack <Node*> s; while(tmp!=NULL||!s.empty()){ if(tmp!=NULL){ printf("%d ",tmp->data); s.push(tmp); tmp = tmp->lchild; } else{ tmp = s.top(); s.pop(); tmp = tmp->rchild; } } } void InOrder(){ if(root == NULL) return; Node *tmp = root; stack <Node*> s; while(tmp!=NULL||!s.empty()){ if(tmp!=NULL){ s.push(tmp); tmp = tmp->lchild; } else{ tmp = s.top(); s.pop(); printf("%d ",tmp->data); tmp = tmp->rchild; } } } }; void PostOrder(Node *root){ if(root==NULL) return; PostOrder(root->lchild); PostOrder(root->rchild); cout<<root->data<<' '; } int main(){ int n; BST b; cin>>n; while(n--){ int tmp; cin>>tmp; b.insert(tmp); } b.PreOrder(); cout<<endl; b.InOrder(); cout<<endl; PostOrder(b.root); cout<<endl; } ``` 提示如下: 段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起。 小弟百度了很久,实在不知道怎么办了,我本地运行都正常呢,OJ就是不通过。 我把oj链接放出来 [提交地址](https://www.nowcoder.com/practice/b42cfd38923c4b72bde19b795e78bcb3?tpId=67&tqId=29644&tPage=1&ru=%2Fkaoyan%2Fretest%2F1005&qru=%2Fta%2Fbupt-kaoyan%2Fquestion-ranking "牛客网OJ链接")
OJ题目运行错误,本地运行没问题
### 小白求救,运行错误,但找不出问题在哪 在本地成功运行,也测试了好多组数据。但是本人可能欠缺经验,编写程序习惯不好,可能一些细节没注意,导致提交到OJ上去,显示运行错误。我自己又找不到问题。。。跪求大佬帮忙看看 ####题目描述 在n个整数中查找指定数字。 ####输入 输入数据有多组,每组数据包括两行,第一行包含一个整数n(0<n<=100)和n个整数。第二行包含一个整数m表示要查找的关键字。 ####输出 如果在n个整数中有和m相等的输出该整数,如果没有输出null。 ####样例输入 ``` 5 1 2 3 4 5 3 3 10 20 30 100 ``` 样例输出 ``` 3 null ``` 小白的代码: ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] array = new int[100]; while (true) { int cin = sc.nextInt(); for (int i = 0; i < cin; i++) { int inp = sc.nextInt(); array[i] = inp; } int inpp = sc.nextInt(); for (int i = 0; i < cin; i++) { if (array[i] == inpp) { System.out.println(inpp); break; } else if (arr[i] != inpp && arr[i] == arr[cin - 1]) System.out.println("null"); } } } } ``` --- #2019-10-26 问题已解决 while循环的循环条件不能用true,要用hasNext
关于一道OJ水牛排队的水题, 请问大神们能不能告诉我除了常规思路,有没有简单一点的方法
Description (C语言) John这个农民养了N头牛 ( 1 ≤ N ≤ 1000 )。有一天,他把牛排成一行,每头牛都有一个"品种编码",例如,水牛的编码都是1,黄牛是2,奶牛是3,等等,它们随机分布在这一行中。第i头牛的品种记录在数组B[i]中。 农民John希望这一行牛中如果有连续一片品种相同的牛放在一起,看起来就更加爽心悦目了。于是他从这一排牛中拿走某个品种的牛,以便创造出这样的一片。请你帮他计算一下,如果拿走某个品种的牛后,所能得到最多的品种相同的连续的牛有多少头。 Input 第一行:总的牛的数量N 第二行至N+1行:每行是一个正整数B[i],表示第i头牛的品种。0 ≤ B[i] ≤ 1,000,000 Output 输出一个正整数a,表示John所能制造出的拥有相同品种的连续的牛的最大数量。 Sample Input 9 2 7 3 7 7 3 7 5 7 Sample Output 4 Hint Sample Input的解释:一共有9头牛,排成一行后的品种分别是 2, 7, 3, 7, 7, 3, 7, 5, 7 Sample Output的解释:拿掉所有品种为3的牛后,这行牛变成 2, 7, 7, 7, 7, 5, 7,这样,就有连续4头牛的品种是7了。 如果拿掉2,就变成 7, 3, 7, 7, 3, 7, 5, 7 ,最多只有2头品种为7的牛连续在一起; 如果拿掉7,就变成 2, 3, 3, 5 ,就最多只有2头品种为3的牛连续在一起; 如果拿掉5,就变成 2, 7, 3, 7, 7, 3, 7, 7 ,也是最多只有2头品种为7的牛连续在一起; 所以,能够得到的最大连续品种的牛的数量是4。
一道OJ上的题,数的划分,求大神解答
有N个排列好的数,不改变排列次序,要分成K个部分,每个部分至少有一个数, (其中K <=N),若将每一个部分的数相乘,然后将K个部分相加,则可以得到一个表达式,求这个表达式的最大数值。 输入格式 文件第一行为2个整数N、K 下面N行为N个整数(N<=100,整数的范围都在整型以内) 样例输入 5 2 1 2 3 4 5 样例输出 121 我的思路是动态规划:以f(i,j)表示分成i组,最后一个数是j的最大数值。 以下是我的代码: #include <iostream> #include <algorithm> using namespace std; int n,a[101],m,f[101][101]; int main() { cin>>n>>m; for (int i=1;i<=n;++i) cin>>a[i]; for (int i=1;i<=m;++i) for (int j=i;j<=n;++j) { int s=1; for (int k=j-1;k>=i-1;--k) { s*=a[k+1]; f[i][j]=max(f[i][j],f[i-1][k]+s); } } cout<<f[m][n]; return 0; }
OJ的输入输出 C语言的输入输出多组测试数据
请问OJ测试代码时是如何输入输出的?C语言如何实现多组数据的输出?比如这道题 “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。 Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。 Output 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。 Sample Input 100 120 300 380 Sample Output no 370 371
OJ上的一道期末题,在我的codebook里正常运行 但OJ评分系统里无法编译?
![图片说明](https://img-ask.csdn.net/upload/201812/28/1545989011_462996.png) C语言 问题如图 就是这个万恶的代码 ``` #include <stdio.h> #include <string.h> int main() { int b=0,c=-1,d,f,i=0; char x[100],z[6][10]; gets(x); for(f=0;f<6;f++) { for(c=c+1,b=0;x[c]!=' ';b++,c++) { z[f][b]=x[c]; } z[f][b]='\0'; } for(d=0;d<5;d++) { if(strcmp(z[5],z[d])==0) { i++; } } printf("%d",i); return 0; } ``` 求各位大神 该怎么破
一道oj题目,真的找不到我的程序的问题,求助大佬,到底哪错了?
![图片说明](https://img-ask.csdn.net/upload/201912/07/1575658412_615532.jpg) https://paste.ubuntu.com/p/jnrCDf9nCj/ 1:怎么实现多行字符串输入 2:12q121qq121q121q3q3q3q3q3q33q121q121q212q121q12q21q这个测试例子guo'b'l
运行时runtime error 不清楚哪里错了 求指点 oj上的
#include<stdio.h> int main() { int n,j=0,i,s[100]; scanf("%d",&n); while (n!=0) { int a[100]; static int k=0; s[k]=0; for (i=0;i<n;i++) scanf("%d",&a[i]); for (i=n-1;i>0;i--) { if (a[i]+a[i-1]>0||a[i]+a[i-1]==0) s[k]=s[k]+a[i]; } if (a[0]>0) s[k]=s[k]+a[0]; k=k+1; scanf("%d",&n);j=j+1; } for (i=0;i<j;i++) {if (i<j-1)printf("%d\n",s[i]); else printf("%d",s[i]); } return 0; }
[OJ题][TLE][C语言]关于整数数列的任意连续子数列快速遍历出现TLE的解决方案
使用C语言。 在做OJ题的时候,在一道题目上的被难住了,花了很多时间去优化算法,还是出现了TLE。 《下面是题目。》 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575975710_910686.png) ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575975837_762326.png) 我最初对题目的理解: * 给定一个N长度(接近10^5)的整数数列,其连续子数列可以含有1~N个元素。 * Lenth值就是子数列的元素个数。 * Weight值就是子数列的Lenth × 最小元素。 我起初的解法是: * 用int N[100001]存储数列值,其中N[0]记录数列长度。 * AskWay 1 :对于每次询问AskValue,使用三个嵌套循环,外循环为子数列长度从AskValue递增到N[0],内循环为依次遍历整个数组,第二个内循环取子数列中间的最小值。将上述值依次暂存后,遇大的Weight就替换。得到目标结果。 * AskWay 2 :对于每次询问AskValue,子数列长度从1开始递增,当Weight值大于AskValue时离开循环。 其结果不可避免的TLE超时了。 。 第二次想到,对于每个数列的M次询问,我只需要把该数列的每个长度的子序列Weight最大值存下来,然后每次询问只需要进行一次二分查找即可。 于是我再建立了MaxWeigth数组和MinLenth数组。 结果还是TLE。 。 第三次打算对数列的处理进行优化,想到长子序列一定包含短子序列,对于所有长子序列的最小值必定包含在所有短子序列的最小值中。 而且,假定子数列长度为“n”,数列总长度为“N”,则长度为n的连续子数列个数为N-n+1。 长度为n的两个相邻连续子数列的总长度为n+1(包含重复数列), 则长度为n+1的长连续子数列必定包含两个相邻短连续子数列,其最小值在短数列的两个最小值中产生。 。 可以得到下图的结论。 ![图片说明](https://img-ask.csdn.net/upload/201912/10/1575978997_821620.png) 比较次数为:n(n-1)/2。复杂度降为n^2。 结果还是TLE超时。VS测出单次建立持续时间为3600ms,而题目可能会测试T=15次。最后把数组用指针地址递增读取,持续时间降到了1400ms,然而还是不行。 以下为所用代码。 (写代码的时候为了便于测试,输入的N组数据用了随机数的方式读取,输出函数给注释掉了) ``` #include<stdio.h> #include<stdlib.h> #define Min(x) (((*x)<(*(x+1)))?(*x):(*(x+1))) #define Wide 100001 int N[2][Wide] = { 0 }; int Len[Wide] = { 0 }; int MaxW[Wide] = { 0 }; int MinL[Wide] = { 0 }; void SubSequenceMax(void); int BinarySearch(int a[], int value, int n); int main() { int T, M; int i, j, k, l, Askway, AskValue, weight, lenth; //scanf_s("%d", &T); T = 1; for (i = 1; i <= T; i++) { //scanf_s("%d%d", &N[0][0], &M); N[0][0] = 80000; M = 40000; for (j = 1; j <= N[0][0]; j++) { //scanf_s("%d", &N[0][j]); N[0][j] = rand() % 100000; } ; SubSequenceMax(); ; MaxW[N[0][0]] = Len[N[0][0]]; MinL[1] = Len[1]; for (l = N[0][0] - 1; l >= 1; l--) { MaxW[l] = MaxW[l + 1] > Len[l] ? MaxW[l + 1] : Len[l]; MinL[N[0][0] + 1 - l] = Len[N[0][0] + 1 - l] < MinL[N[0][0] - l] ? MinL[N[0][0] - l] : Len[N[0][0] + 1 - l]; } for (k = 1; k <= M; k++) { //scanf_s("%d%d", &Askway, &AskValue); Askway = rand() % 2 + 1;//delete if (Askway == 1) { AskValue = rand() % (N[0][0] / 2) + N[0][0] / 4;//delete weight = MaxW[AskValue]; //printf("%d\n", weight); } else if (Askway == 2) { AskValue =Len[rand() % (N[0][0] / 2) + N[0][0] / 4];//delete if (AskValue > MinL[N[0][0]]);// printf("-1\n"); else if (AskValue <= MinL[1]);// printf("1\n"); else { lenth = BinarySearch(MinL, AskValue, N[0][0]); //printf("%d\n", lenth); } } } } } void SubSequenceMax(void) { int sublenth, record = 0, tempmax; int *pN,*ipN; int *rand; for (sublenth = 1; sublenth <= N[0][0]; sublenth++) { if (record == 0) { pN = N[1]; ipN = N[0]; rand = &N[1][(N[0][0] - sublenth)+1]; record = 1; pN++; ipN++; tempmax = N[0][1]; for (; pN <= rand; pN++, ipN++) { *pN = Min(ipN); tempmax = (((*ipN * sublenth) > (tempmax * sublenth)) ? *ipN : tempmax); } Len[sublenth] = tempmax * sublenth; } else { pN = N[0]; ipN = N[1]; record = 0; rand = &N[0][(N[0][0] - sublenth)+1]; pN++; ipN++; tempmax = N[1][1]; for (; pN <= rand; pN++,ipN++) { *pN = Min(ipN); tempmax = (((*ipN * sublenth) > (tempmax * sublenth)) ? *ipN : tempmax); } Len[sublenth] = tempmax * sublenth; } } } int BinarySearch(int a[], int value, int n) { int low, high, mid; low = 1; high = n; while (low <= high) { mid = (low + high) / 2; if (a[mid] >= value && a[mid-1]<value) return mid; if (a[mid] >= value) high = mid - 1; if (a[mid] < value) low = mid + 1; } return -1; } ```
大一新生 学校oj上的问题 实在不知道哪里错了 大佬们能帮我解决一下吗?
``` #include<stdio.h> #include<string.h> int main() { int len2,len1,i,max,n; while(scanf("%d",&n)!=EOF) { char s1[2000]={0},s2[1000]={0}; gets(s1); gets(s2); len1=strlen(s1); max=0; for(i=1;i<len1;i++)//寻找一串字符中最大的字符 { if(s1[i]>s1[max]) max=i; } len2=strlen(s2); for(i=len1-1;i>=max+1;i--)//将s1字符串中最大字符后面的字符移动len2个位置 { s1[i+len2]=s1[i]; } for(i=max+1;i<=max+len2;i++)//将s2中的字符插入到s1当中 { s1[i]=s2[i-max-1]; } puts(s1); } return 0; } ``` 问题:给定两个字符串s和t,在s字符串中的最大字符后边插入字符串t。 输入:测试数据有多组,每组包含两个字符串s和t,分别占两行,均不超过100个字符。 输出:对于每组测试数据,输出插入后的新字符串,单独占一行。若有多个最大字符,则插在第一个之后。 我试了很多组数据都对了(用的dev c++),但是在学校的oj上还是wa
顺序排序的一道题,希望大神指点一下
描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。 输入 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。 其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。 输出 输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩) 样例输入 5 3 90788001 67.8 90788002 90.3 90788003 61 90788004 68.4 90788005 73.9 样例输出 90788004 68.4 我的代码 ``` #include<stdio.h> int main() { int a,i,j,n,k,t; double temp,b; double score[256]; int id[256]; scanf("%d %d",&n,&k); for(i=1;i<=n;i++) { scanf("%d %lf",&a,&b); id[i]=a; score[i]=b; } for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) if(score[j]<score[i]) { temp=score[i]; score[i]=score[j]; score[j]=temp; t=id[i]; id[i]=id[j]; id[j]=t; } } printf("%d %g",id[k],score[k]); return 0; } ``` http://noi.openjudge.cn/ch0110/01/ 原题地址 我这道题测试了一下没错,但是oj只给了2分,希望大神帮我改到满分
C++ OJ题数字统计 求解
题目描述 给出一个字符串S(S仅由’0’~’9’组成,且不包含空格,长度≤100),请将其各个数字按个数打印出,并且输出各个数字之和。 输入 第一个行整数N为测试数据组数。接下来N行为S。 输出 如果数字i(0≤i≤9)出现的次数大于0则输出i : Ai (Ai为i出现的次数),并在末尾输出S中各个数字的和,每组输出结束后空一行。(最后一组数据后无空行)。 样例输入 2 0012 13588 样例输出 0:2 1:1 2:1 3 1:1 3:1 5:1 8:2 25
为什么一道简单的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上的题,为什么过不了? ``` #include<stdio.h> struct Employee{ char name[10]; float Basic,Variable,Expenditure,Payroll; }; void Sort(struct Employee *p,int n) { struct Employee a; int i,j; for(i=0;i<n;i++) for(j=i;j<n;j++) { if(p[i].Payroll>p[j].Payroll||(p[i].Payroll==p[j].Payroll&&p[i].Basic>p[j].Basic)||(p[i].Payroll==p[j].Payroll&&p[i].Basic==p[j].Basic&&p[i].Variable>p[j].Variable)) { a=p[i]; p[i]=p[j]; p[j]=a; } } } int main() { struct Employee emp[100]; int i,n,Cas=0; while(scanf("%d",&n)!=EOF) { Cas++; for(i=0;i<n;i++) { scanf("%s%f%f%f",emp[i].name,&emp[i].Basic,&emp[i].Variable,&emp[i].Expenditure); emp[i].Payroll=emp[i].Basic+emp[i].Variable-emp[i].Expenditure; } Sort(emp,n); printf("Case #%d:\n",Cas); for(i=0;i<n;i++) printf("%10s%10.2f\n",emp[i].name,emp[i].Payroll); } return 0; } ``` 题目:给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序按照排序规则顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。 排序规则:按照实发工资从小到大排序,如果实发工资相同的则按照基本工资从小到大排序,如果实发工资和基本工资都相同,则按照浮动工资从小到大排序。 注意:main函数已经给定(如下所示)。 请将程序补充完整。 提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。
C++OJ题 矩阵重排 求解
题目描述 对n*n的方阵,进行重排,使得按之字形排序,比如n=3时,重排后得到: 1 3 4 2 5 8 6 7 9 又如当n=4时,重排后得到: 1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16 输入 输入一个整数n<20 输出 按之字形排序的方阵 每个数字占3个字符 样例输入 3 样例输出 1 3 4 2 5 8 6 7 9
九度OJ上的迪杰斯特拉算法题
九度OJ上的一道题 http://ac.jobdu.com/problem.php?pid=1100 思路是使用迪杰斯特拉算法,结合高精度整数运算 我测试了好多测试用例都没又发现错误 但是提交后现实WA,求大神指明错误,感激不尽啊。。。 ``` #include <iostream> #include <stdio.h> #include <vector> #include <string> #include <stack> #include <queue> #include <math.h> #include <time.h> #include <map> #include <algorithm> #include<memory.h> #define MAX 0x0fffffff #define K 100000 using namespace std; class BigInt { public: int num[100]; int n; BigInt(string s) { for(int i=0;i<100;i++) num[i] = 0; int res = 0; int cnt = 0; int weight = 1; n = 0; for(int i=s.size()-1;i>=0;i--) { res += weight*(s[i]-'0'); cnt++; weight*=10; if(cnt==4||i==0) { num[n++] = res; res = 0; cnt = 0; weight = 1; } } } BigInt() { for(int i=0;i<100;i++) num[i] = 0; n=0; } friend const BigInt operator + (const BigInt & bi1,const BigInt & bi2) { int carry = 0; BigInt Res; int k =0; for(int i=0;i<bi1.n||i<bi2.n;i++) { int res = bi1.num[i]+bi2.num[i]+carry; int remainder = res%10000; carry = res/10000; Res.num[k++] = remainder; } if(carry!=0) { Res.num[k++] = carry; } Res.n = k; return Res; } friend const BigInt operator * (const BigInt & bi,const int & m) { int carry = 0; BigInt Res; int k =0; for(int i=0;i<bi.n;i++) { int res = bi.num[i]*m+carry; carry = res/10000; Res.num[k++] = res%10000; } if(carry!=0) { Res.num[k++] = carry; } Res.n = k; return Res; } friend const int operator % (const BigInt & bi,const int & m) { int r = 0; for(int i=bi.n-1;i>=0;i--) { int remainder = (r*10000+bi.num[i])%m; r = remainder; } return r; } friend const bool operator <(const BigInt & bi1,const BigInt & bi2) { if(bi1.n<bi2.n)return true; else if(bi1.n>bi2.n)return false; else { int carry =0 ; int k = 0; for(int i=0;i<bi1.n||i<bi2.n;i++) { int res = bi1.num[i]-bi2.num[i]+carry; if(res<0) { res+=10000; carry = -1; } else carry = 0; } if(carry<0)return true; else return false; } } friend const bool operator >(const BigInt & bi1,const BigInt & bi2) { if(bi1.n>bi2.n)return true; else if(bi1.n<bi2.n)return false; else { int carry =0 ; int k = 0; for(int i=0;i<bi1.n||i<bi2.n;i++) { int res = bi1.num[i]-bi2.num[i]+carry; if(res<0) { res+=10000; carry = -1; } else carry = 0; } if(carry<0)return false; else return true; } } }; class Edge { public: int num; BigInt weight; Edge(int num,BigInt weight) { this->num = num; this->weight = weight; } Edge() { this->num = -1; } }; vector<vector<Edge> > V(101,vector<Edge>()); vector<bool> Visited(101,false); void Init() { V.clear(); Visited.clear(); V.resize(101,vector<Edge>()); Visited.resize(101,false); } void Output(BigInt bi) { for(int i=bi.n-1;i>=0;i--) { if(i==bi.n-1)cout<<bi.num[i]; else printf("%04d",bi.num[i]); } //cout<<'k'; cout<<endl; } int main() { freopen("D:\\input.txt","r",stdin); int n,m; while(cin>>n>>m) { Init(); BigInt weight("1"); vector<BigInt> Dist(n,BigInt()); for(int i=0;i<m;i++) { int a,b; cin>>a>>b; //Output(weight); V[a].push_back(Edge(b,weight)); V[b].push_back(Edge(a,weight)); weight = weight*2; } Visited[0] = true; Dist[0] = BigInt("0"); for(int i=0;i<V[0].size();i++) { Dist[V[0][i].num] = V[0][i].weight; } int cnt =n; cnt--; while(cnt--) { BigInt min_weight("123123123"); int min_num = -1; for(int i=0;i<n;i++) { if(!Visited[i]&&Dist[i].n!=0&&Dist[i]<min_weight) { min_weight = Dist[i]; min_num = i; } } //cout<<min_num<<endl; if(min_num==-1) { break; } Visited[min_num] = true; for(int i=0;i<V[min_num].size();i++) { int target_ind = V[min_num][i].num; BigInt target_weight = V[min_num][i].weight; if(!Visited[target_ind]&&(Dist[target_ind].n==0||Dist[target_ind]>Dist[min_num]+target_weight)) { Dist[target_ind] = Dist[min_num]+target_weight; } } } for(int i=1;i<n;i++) { if(Dist[i].n==0)cout<<-1<<endl; else { if(Dist[i].n>=2) { cout<< Dist[i]%K<<endl; } else Output(Dist[i]); } } } } ```
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问

相似问题

1
1011 a+b和c 用string读取,本地通过,oj不通过
2
哈理工oj的2383 算法实力。我的代码为什么超时
1
java代码有bug,在eclipse上可以运行,在oj系统上就有错误,但是只能运行一部分
1
c++oj问题,程序tle了,不知道是哪里耗时比较多【霍夫曼编码】。
0
hdu杭电oj第1248题 为什么总是wrong
1
C语言 校OJ1497 坚强的蜗牛
0
杭电oj2093测试样例对了,但是提交的时候显示wrong answer
1
写北大oj1003时的疑惑,求各位路过的大佬帮帮忙
1
OJ上方差的题目 runtime error SIGSEGV 不知道为啥?求大神???
1
OJ上的一道期末题,在我的codebook里正常运行 但OJ评分系统里无法编译?
1
C++ 写了一个二叉排序树的小程序,在牛客网OJ报错,请教一下各位。
0
为什么在VS2017上能正常运行而在OJ上面就Runtime Error:Segmentation fault呢?求助!!!
1
在vs2017上运行没有问题,在学校的oj上(gcc编译器)发生段错误,不知道错误点在哪里,求点明
0
求大佬帮助,我不知道我是不是有那种情况没考虑到,到OJ上提交显示答案错误(本人c语言菜鸟)?
1
oj平台答案不能通过是输入输出格式不对嘛
1
有关Dijkstra算法的一道基础的编程题,不知道无法AC的原因
1
在学校的oj遇到了 cygwin_exception
2
(c语言的)为什么oj平台一直显示运行时错误?
1
在oj系统中提交老是出现Runtime Error,怎么修改也不行,求指点
1
闭环加密问题,在devc上运行没猫饼?