C语言,从10个数中找出其中最大值和最小值,为什么重复加这一句?
#include <stdio.h>

int max,min;     
void max_min_value(int *array,int n)    
{int *p,*array_end;
 array_end=array+n;
 max=min=*array;  
 for(p=array+1;p<array_end;p++)
   if(*p>max)max=*p;
   else if (*p<min)min=*p;
 return;
}

main()
{int i,number[10],*p;
 p=number;           
 printf("enter 10 integer numbers:\n");
 for(i=0;i<10;i++,p++)
   scanf("%d",p);
 p=number;             //请问为什么加这句?前面不是已经指向了吗?
 max_min_value(p,10);
 printf("\nmax=%d,min=%d\n",max,min);
 }

1个回答

for 循环里 p++,指向变了,要重新指向number,不然传给之后函数的地址就不是number了,而是number[9]的地址

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++求n个数据中的最大值和最小值。具体要求如下:
要求: 1、要用函数求n个数据中的最大值和最小值 2、使用引用作为函数参数 3、在main函数中输出n个数的最大值和最小值 4、n以及n个数都在运行时输入
运用C语言比较三个数中的最大值和最小值
![图片](https://img-ask.csdn.net/upload/201712/03/1512300091_669616.jpg)
用C语言实现:在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且差值最小
Problem Description 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小。 Input 输入一个整数T表示T组数据。 对于每组数据第一行输入一个正整数n(1<=n<=100)表示矩阵的大小。 接着输入n行,每行n个数x(0<=x<=100)。 Output 对于每组数据输出一个数表示最小差值。 Sample Input 1 4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 Sample Output 3
一个包含n(2<=n<=50)个实数的数列,从中找2个数,使得这两个数的差是最大的。
问题分析:算式a-b,要使得值最大,那么,要求被减数a最大,减数b最小,从而使得a-b最大。从数列中,找出最大的数,存入max变量;找出最小的数,存入min变量。显然,max-min的值是最大的。 输入:两行,第一行一个正整数,表示数列中的实数个数n; 第二行,n个数,表示数列的n个实数; 输出:一行一个数,表示数列的最大差值(保留2位小数)。
刚刚初学C# 这几个问题有人能帮我解决一下吗 我想看看代码什么样子的
1.设半径r=1.5,圆柱高h=3,编写程序求园周长,圆面积,圆球表面积,圆球体积,圆柱体积.输出计算结果.圆周长:l=2*pi*r.圆面积:s=pi*r*r 球面积:s=4*pi*r*r 2.输入一个正整数,将该数的各位左右反转输出,即输入123,输出321。(使用while循环实现) 3.(如何在一行输出15个数并换行) 4.从键盘输入10个整型数据,输出10个数,并输出其平均值和最大值。 5.编写一个函数,求两数中的最小值,在主函数中输入这两个数,调用函数求出最小值,再求最小值的平方并输出 6.定义一个学生结构体,成员属性包含,姓名,性别和班级,使用结构体数组初始化3名学生,通过for循环输出学生全部信息.
[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; } ```
C语言新手问题...老鸟莫嫌弃``
编写函数(无返回有三个参数), 向函数传递三个浮点数, 函数中实现(指针完成):1) 求得最大值和最小值(2) 交换最大值和最小值(3) 打印三个数 void MaxMinChangeEachOtherNew(float a,float b,float c){ float *max; float *min; max = &(a > b ? a : b > c ? a > b ? a : b : c); //这两行报错```为什么呢?? min = &(a < b ? a : b < c ? a < b ? a : b : c); float s = *max; *max = *min; *min = s; }
C语言 数组交换问题 用指针
输入 10 个整数,将其中最小的数与第一个数互换,把最大的数与最后一个数互换。写三个函数分别实现:(1)输入 10 个数;(2)实现具体互换处理,并通过指针型参数的间接运算返回最大值和最小值;(3)输出 10 个数。 脑子已经迷糊了 中间的交换函数不会写了。。qiu'jiao #include<stdio.h> void input(int *x[],int n) { int i; for(i=0;i<=n-1;i++) { scanf("%d",&x[i]); } } void swap(int *x[],int n) void output(int *x[],int n) { int i; for(i=0;i<n;i++) { printf("%d ",x[i]); } } int main() { int a; input(a,10); swap(a,10); output(a,10); return 0; }
c语言线程池关于空闲线程队列的疑问?
一般的线程池都会有任务队列、繁忙线程队列和空闲线程队列。这些队列的具体作用是什么呢?我觉得没有这些队列也是可以实现线程池的。 我认为这些队列在线程池中的一个主要作用就是:用于控制线程个数,当空闲线程队列个数低于最小值时需要创建新线程,当空闲线程队列个数高于某个最大值时需要减少线程个数。而这些不用空闲线程队列用计数也是可以做到的,当有空闲线程时计数就+1,然后如果这个数值低于最小值时就创建新线程。
pta上敲题时出现关于指针与数组运用的问题~
## 7-24 交换最小值和最大值 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: > 5 > 8 2 5 1 4 输出样例: > 1 2 5 4 8 程序清单: ``` #include<stdio.h> swap(int *p1,int *p2) //交换两个变量的值 { int temp; temp=*p1;*p1=*p2;*p2=temp; } int main() { int n; scanf("%d",&n); int a[n],k=0,i,min,max,b; for(i=0;i<n;i++)scanf("%d",&a[i]); for(i=0,min=a[0];i<n-1;i++) { if(min>a[i+1]) { k=i+1;min=a[i+1]; } if(max<a[i+1]) { b=i+1;max=a[i+1]; } } swap(&a[0],&a[k]); swap(&a[b],&a[n]); for(i=0;i<n-1;i++) { printf("%d ",a[i]); } printf("%d",a[n]); } ``` 结果:![图片说明](https://img-ask.csdn.net/upload/201911/21/1574272241_372175.jpg) 我想请教各位咕噜我想法那里不对,遇到这种题怎么解决?寻找一个数组中最大与最小的是不是要这么麻烦?算法有更简便的请务必告知,谢了~
求教这串代码哪里有bug?
题意是输入十个整数,将这十个数中的最小值与第一位对调, 最大值与最后一位对调,然后输出这十个数。 但是这串代码输出的是第一位数依次加上4,求教问题出在哪? 谢谢! #include<stdio.h> void input(int*); void fun(int*); void print(int*); int main() { int a[10]; int *p=a; input(p); fun(p); print(p); return 0; } void input(int *p) { int i; for (i=0;i<10;i++) { scanf("%d",p+i); } } void fun(int *q) { int i,t=0; int *p=q; int *pmin=p; int *pmax=p; for (i=0;i<10;i++,++p) { if (*p>*pmax) { pmax=p; } if (*p<*pmin) { pmin=p; } } t=*pmax; *pmax=*p; *p=t; t=*pmin; *pmin=*p; *p=t; } void print(int *p) { int i; for(i=0;i<10;i++) { printf("%d ",p+i); } printf("\n"); }
想用堆实现哈夫曼树,为啥一开始就不得行了数值都输不动?
#include<stdio.h> #include<stdlib.h> //创建最小堆 typedef struct HeapStruct *MinHeap; struct HeapStruct { struct TreeNode *a;//存储堆元素的数组 int size;//堆的当前元素的个数 int capacity;//堆的最大容量 } ; //======================================== typedef struct TreeNode *HuffmanTree; struct TreeNode { int Weight; HuffmanTree Left,Right; }; //====================================== MinHeap Creat(int MinSize)//创建一个堆的过程 { //创建容量为Maxsize的空的最大堆 MinHeap H= (MinHeap)malloc(sizeof(struct HeapStruct)); H->a =(HuffmanTree)malloc((MinSize+1)*sizeof(struct TreeNode)); H->size =0; H->capacity =MinSize; H->a[0].Weight =1000; //赋一个最大值当作哨兵,不论怎么调整堆节点 //这个哨兵总是比他大 return H; } void Insert(MinHeap H,int item) { //将元素item插入到最大堆H,其中H->Elements[0]已经定义为哨兵 int i; if(H->size ==H->capacity ) { printf("最小堆已经满了"); return ; } i=++H->size ;//i指向插入后堆中的第一个元素的位置 for(;H->a[i/2].Weight >item;i/2) { H->a[i].Weight =H->a[i/2].Weight ; } H->a[i].Weight =item; } HuffmanTree DeleteMin(MinHeap H)//删除堆定元素 { int parent,child; int temp;HuffmanTree MinItem; if(H->size ==0)//判断堆是否为空 { printf("最小堆已经为空"); HuffmanTree error; return error; } MinItem=&(H->a[1]);//最大元素为堆顶元素 temp=H->a[H->size--].Weight; for(parent=1;parent*2>=H->size ;parent=child) { child=parent*2; if((child!=H->size )&&(H->a[child].Weight >H->a[child+1].Weight )) child++;//右孩子比左孩子大,child指向右孩子 if(temp>=H->a[child].Weight ) break; else H->a[parent].Weight =H->a[child].Weight ; } H->a[parent].Weight =temp; return MinItem; } void BuildMinHeap(MinHeap H) { printf("请输入5个元素\n"); int num[5]; for(int i=0;i<5;i++) { printf("请输入第%d个元素\n",i+1); scanf("%d",&num[i]); Insert(H,num[i]); } } //================================== HuffmanTree Huffman(MinHeap H) { int i; HuffmanTree T; BuildMinHeap(H); for(i=1;i<H->size ;i++) { T=(HuffmanTree)malloc(sizeof(struct TreeNode)); T->Left =DeleteMin(H); T->Right =DeleteMin(H); } } //=================================== int main() { MinHeap H; BuildMinHeap(H); return 0; } ``` ```
新人,C语言,指针,帮我看看怎么改好吗?
#include <stdio.h> void sort(int *a); main(void) { int i,a[10]; float sum=0.0; int *p; p=a; printf("输入10个数\n"); for(i=0;i<10;i++) { scanf("%d",p++); } p=a; sort(p); printf("最大值为%d,最小值为%d\n",*p,*p+9); for(i=0;i<10;i++) { sum+=*p++; } printf("平均值为%4f",sum/10.0); } void sort(int *a) { int i,temp; for(i=0;i<10;i++,a++) { if(*a<*a+1) { temp=*a; *a+1=*a *a=temp; } } } error C2297: '*' : illegal, right operand has type 'int *' 这个错误到底怎么改::>_<::
麻烦各位前辈看一下我这个C语言程序,找不出错误。
我要对一个数组的数字进行排序,代码是这样的: //声明:该程序中输入的数据不能重复! #include<stdio.h> int imin(const int va[], int n) // find the min of va[] { int i, min; min = va[0]; for (i = 0; i < n; i++) { if (min > va[i]) min = va[i]; } return min; } int imax(const int va[], int n) { int i, max; max = va[0]; for (i = 0; i < n; i++) { if (va[i] > max) max = va[i]; } return max; } /*--------------------------------------*/ int main(void) { int i, j, m, n, min, max; printf("请输入数据个数:"); scanf("%d", &n); //读取数据个数 int va[100], vb[100]; for (i = 0; i < n; i++) { printf("[%d]:", i + 1); scanf("%d", &va[i]); } //读取各个数据到数组 max = imax(va, n); //确定最大值 for (m = n; m > 1; m--) { min = imin(va, m); for (i = 0, j = 0; i < m; i++) if (va[i] > min) vb[j] = va[i]; j++; for (i = 0; i < m - 1; i++) va[i] = vb[i]; va[m - 1] = min; } for (i = 0; i < n; i++) { printf("%d\n", va[i]); } } 我的思路是将中最小的挑出来,比这个大的都放在另一个数组,再把另一个数组复制到原数组,最后会少一个,把最大的放在最后,再从除最大的中挑出第二大的,再重复之前的步骤,一直执行下去。可运行结果跟我想象的不大一样,看了很久还是不知道错在哪,麻烦各位csdn的前辈帮我看一下是错在哪里?谢谢。
为什么k的值会被修改?
这是一道很简单的编程题,但为什么到最后一步交换值的时候,k的值会被修改。 原题: 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 Input: 10个整数 Output: 整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格) Sample Input: 2 1 3 4 5 6 7 8 10 9 Sample Output: 1 2 3 4 5 6 7 8 9 10 #include<stdio.h> void Input(int *a); void Output(int *a); int MaxPos(int *a); int MinPos(int *a); int main() { int a[9],i,j,t,k; Input(a); i = MaxPos(a); j = MinPos(a); t = a[0], k = a[9]; a[0] = a[j], a[j] = t; a[9] = a[i], a[i] = k; Output(a); } void Input(int *a) { int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); } } void Output(int *a) { int i; for(i=0;i<10;i++) { printf("%d ",a[i]); } } int MaxPos(int *a) { int i = 0,k,max; max = a[i]; for(i=1;i<10;i++) { if(a[i] > max) { max = a[i]; k = i; } } return k; } int MinPos(int *a) { int i = 0,k,min; min = a[i]; for(i=1;i<10;i++) { if(a[i] < min) { min = a[i]; k = i; } } return k; } ``` ```
BP算法的C语言实现,代码个人测试正确, 但是wrong answer, 求大神指点
#include <stdlib.h> #include <math.h> #include <stdio.h> #include <time.h> #include <iostream> //#include "user.h" #include<cstdio> #include<iostream> #include<fstream> #include<cstdlib> #include<string> #include<algorithm> #define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES using namespace std; #define OUT_COUT 8 //输出向量维数 #define IN_COUT 72 //输入向量维数 #define COUT 792 //样本数量 #define NN 99 //单个样本数量 typedef struct { //bp人工神经网络结构 int h; //实际使用隐层数量 //double v[IN_COUT][IN_COUT/3]; //隐藏层权矩阵i,隐层节点最大数量为50 double v[IN_COUT/3][IN_COUT]; //double w[IN_COUT/3][OUT_COUT]; //输出层权矩阵 double w[OUT_COUT][IN_COUT/3]; double b1[IN_COUT/3]; double b2[OUT_COUT]; double x[COUT][IN_COUT]; double y[COUT][OUT_COUT]; double a; //学习率 double b; //精度控制参数 int LoopCout; //最大循环次数 } bp_nn; double fnet(double net) { //Sigmoid函数,神经网络激活函数 //return 1/(1+exp(-net)); return 2.0/(1+exp(-net))-1.0; } int InitBp(bp_nn *bp) { //初始化bp网络 /*printf("请输入隐层节点数,最大数为100:\n"); scanf_s("%d", &(*bp).h); printf("请输入学习率:\n"); scanf_s("%lf", &(*bp).a); //(*bp).a为double型数据,所以必须是lf printf("请输入精度控制参数:\n"); scanf_s("%lf", &(*bp).b); printf("请输入最大循环次数:\n"); scanf_s("%d", &(*bp).LoopCout);*/ (*bp).h = 24; (*bp).a = 0.4; (*bp).b = 0.0001; (*bp).LoopCout = 2000; int i, j; srand((unsigned)time(NULL)); for (i = 0; i < (*bp).h; i++) { for (j = 0; j < IN_COUT; j++) { (*bp).v[i][j] = rand() / (double)(RAND_MAX); } (*bp).b1[i] = rand()/(double)(RAND_MAX); } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < (*bp).h; j++) { (*bp).w[i][j] = rand() / (double)(RAND_MAX); } (*bp).b2[i] = rand()/(double)(RAND_MAX); } return 1; } int TrainBp(bp_nn *bp, double x[COUT][IN_COUT], double y[COUT][OUT_COUT]) { //训练bp网络,样本为x,理想输出为y double f = (*bp).b; //精度控制参数 double a = (*bp).a; //学习率 int h = (*bp).h; //隐层节点数 //double v[IN_COUT][IN_COUT/3], w[IN_COUT/3][OUT_COUT]; //权矩阵 double v[IN_COUT/3][IN_COUT], w[OUT_COUT][IN_COUT/3]; //权矩阵 double b1[IN_COUT/3],b2[OUT_COUT]; double ChgH[IN_COUT/3], ChgO[OUT_COUT]; //修改量矩阵 double O1[IN_COUT/3], O2[OUT_COUT]; //隐层和输出层输出量 int LoopCout = (*bp).LoopCout; //最大循环次数 int i, j, k, n; double temp; for (i = 0; i < h; i++) {// 复制结构体中的权矩阵 for (j = 0; j < IN_COUT; j++) { v[i][j] = (*bp).v[i][j]; } b1[i] = (*bp).b1[i]; } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) { w[i][j] = (*bp).w[i][j]; } b2[i] = (*bp).b2[i]; } double e = f + 1; for (n = 0; e > f && n < LoopCout; n++) { //对每个样本训练网络 e = 0; for (i= 0; i < COUT; i++) { for (k= 0; k < h; k++) { //计算隐层输出向量 temp = 0; for (j = 0; j < IN_COUT; j++) temp = temp + x[i][j] * v[k][j]; O1[k] = fnet(temp+(*bp).b1[i]); } for (k = 0; k < OUT_COUT; k++) { //计算输出层输出向量 temp = 0; for (j = 0; j < h; j++) temp = temp + O1[j] * w[k][j]; O2[k] = fnet(temp+(*bp).b2[k]); } for (j = 0; j < OUT_COUT; j++) {//计算输出层的权修改量 ChgO[j] = O2[j] * (1 - O2[j]) * (y[i][j] - O2[j]); } for (j = 0; j < OUT_COUT ; j++) {//计算输出误差 e = e + (y[i][j] - O2[j]) * (y[i][j] - O2[j]); } for (j = 0; j < OUT_COUT; j++) { //计算隐层权修改量 temp = 0; for (k = 0; k < h; k++) temp = temp + w[j][k] * ChgO[k]; ChgH[j] = temp * O1[j] * (1 - O1[j]); } for (j = 0; j < OUT_COUT; j++) {//修改输出层权矩阵 for (k = 0; k < h; k++) { w[j][k] = w[j][k] + a * O1[j] * ChgO[k]; } } for (j = 0; j < h; j++) { for (k = 0; k < IN_COUT; k++) { v[j][k] = v[j][k] + a * x[i][j] * ChgH[k]; } } } if (n % 10 == 0) printf("误差 : %f\n", e); } printf("总共循环次数:%d\n", n); printf("调整后的隐层权矩阵:\n"); for (i = 0; i < h; i++) { for (j = 0; j < IN_COUT; j++) printf("%f ", v[i][j]); printf("\n"); } printf("调整后的输出层权矩阵:\n"); for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) printf("%f ", w[i][j]); printf("\n"); } for (i = 0; i < h; i++) {//把结果复制回结构体 for (j = 0; j < IN_COUT; j++) { (*bp).v[i][j] = v[i][j]; } (*bp).b1[i] = b1[i]; } for (i = 0; i < OUT_COUT; i++) { for (j = 0; j < h; j++) { (*bp).w[i][j] = w[i][j]; } (*bp).b2[i] = b2[i]; } printf("bp网络训练结束!\n"); return 1; } int UseBp(bp_nn *bp) { //使用bp网络 float Input[IN_COUT]; double O1[50]; double O2[OUT_COUT]; //O1为隐层输出,O2为输出层输出 while (1) { //持续执行,除非中断程序 printf("请输入3个数:\n"); int i, j; for (i = 0; i < IN_COUT; i++) scanf_s("%f", &Input[i]); double temp; for (i = 0; i < (*bp).h; i++) { temp = 0; for (j = 0; j < IN_COUT; j++) temp += Input[j] * (*bp).v[j][i]; O1[i] = fnet(temp-(*bp).b1[i]); } for (i = 0; i < OUT_COUT; i++) { temp = 0; for (j = 0; j < (*bp).h; j++) temp += O1[j] * (*bp).w[j][i]; O2[i] = fnet(temp-(*bp).b2[i]); } printf("结果: "); for (i = 0; i < OUT_COUT; i++) printf("%.3f ", O2[i]); printf("\n"); } return 1; } void readFP(double x[COUT][IN_COUT],double y[COUT][OUT_COUT]) { //bp_nn bp1; ifstream fileinput1; ifstream fileinput2; ifstream fileinput3; ifstream fileinput4; ifstream fileinput5; ifstream fileinput6; ifstream fileinput7; ifstream fileinput8; fileinput1.open("emgclose.txt"); fileinput2.open("emgopen.txt"); fileinput3.open("emgext.txt"); fileinput4.open("emgfle.txt"); fileinput5.open("emgsph.txt"); fileinput6.open("emgcyl.txt"); fileinput7.open("emgtri.txt"); fileinput8.open("emgkey.txt"); for(int m = 0;m< NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput1 >> x[m][i]; } } for(int m = NN;m<2*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput2 >> x[m][i]; } } for(int m = 2*NN;m<3*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput3 >> x[m][i]; } } for(int m = 3*NN;m<4*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput4 >> x[m][i]; } } for(int m = 4*NN;m<5*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput5 >> x[m][i]; } } for(int m = 5*NN;m<6*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput6 >> x[m][i]; } } for(int m = 6*NN;m<7*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput7 >> x[m][i]; } } for(int m = 7*NN;m<8*NN;++m) { for(int i =0;i < IN_COUT;++i) { fileinput8 >> x[m][i]; } } fileinput1.close(); fileinput2.close(); fileinput3.close(); fileinput4.close(); fileinput5.close(); fileinput6.close(); fileinput7.close(); fileinput8.close(); ifstream fileinput; fileinput.open("teach.txt"); for (int m2 = 0; m2 < OUT_COUT; m2++) { for (int i = 0; i < OUT_COUT; i++) { fileinput>>y[m2][i]; } for (int j = m2*NN; j < (m2+1)*NN; j++) { for (int k = 0; k < OUT_COUT; k++) { y[j][k] = y[m2][k]; } } } for (int i = 0; i < NN; i++) { for (int j = 0; j < OUT_COUT; j++) { y[i][j] = y[0][j]; } } fileinput.close(); double Mininput[IN_COUT] = {0.0}; double Maxinput[IN_COUT] = {0.0}; //找出训练的数据相应的最大值、最小值,为归一化做准备 for (int i = 0; i < IN_COUT; i++) { Mininput[i] = Maxinput[i] = x[0][i]; for (int j = 0; j < COUT; j++) { Mininput[i] = Mininput[i] < x[j][i]?Mininput[i]:x[j][i]; Maxinput[i] = Maxinput[i] > x[j][i]?Maxinput[i]:x[j][i]; } } //归一化处理 for (int i = 0; i < OUT_COUT; i++) { for (int j = 0; j < COUT; j++) { y[j][i] = 2.0*(y[j][i] - 0.0)/(1.0 - 0.0)-1.0; } } for (int i = 0; i < IN_COUT; i++) { for (int j = 0; j < COUT; j++) { //X[i][j] = (X1[i][j] - Mininput[i]+1)/(Maxinput[i] - Mininput[i]+1); x[j][i] = 2.0*(x[j][i] - Mininput[i])/(Maxinput[i] - Mininput[i])-1.0; } } } int main() { /* float x[COUT][IN_COUT] = {{0.8,0.5,0}, {0.9,0.7,0.3}, {1,0.8,0.5}, {0,0.2,0.3}, {0.2,0.1,1.3}, {0.2,0.7,0.8}}; //训练样本 int y[COUT][OUT_COUT] = {{0,1}, {0,1}, {0,1}, {1,0}, {1,0}, {1,0}}; */ //理想输出 bp_nn bp; readFP(bp.x,bp.y); InitBp(&bp); //初始化bp网络结构 TrainBp(&bp, bp.x, bp.y); //训练bp神经网络 // UseBp(&bp); //测试bp神经网络 return 1; }
memset()函数为什么用错了
想求助下问什么我在下面代码中,memset()函数放在Prim()函数中提交会报:Runtime Error 但是放在主函数中则AC ```cpp /**无向图求最小生成树*/ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define Max 999999 //设置一个最大值 using namespace std; int n,m; //n表示结点个数、m表示边的条数 int vis[1010]; //判断结点是否访问 int mp[1010][1010]; //无向图邻接矩阵 int cost[1010]; //最小生成树每条边权值 /**初始化邻接矩阵*/ void init() { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j) mp[i][j]=0; else mp[i][j]=Max; } } } /**Prim算法*/ void Prim() {/**以顶点0为出发点*/ //memset(vis,0,sizeof(vis)); //放在这会Runtime Error。。。 for(int i=1;i<n;i++) { cost[i]=mp[0][i]; } cost[0]=0; vis[0]=1; for(int i=0;i<n;i++) { int Min=Max+1; int pos; for(int j=0;j<n;j++) { if(cost[j]<Min&&vis[j]==0) { pos=j; Min=cost[j]; } } vis[pos]=1; for(int j=0;j<n;j++) { if(vis[j]==0&&mp[pos][j]<cost[j]) { cost[j]=mp[pos][j]; } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { init(); /**无语,这个必须放在这*/ memset(vis,0,sizeof(vis)); int a,b,v; //表示两个结点a、b与相连接的一条边上的权值v for(int i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&v); if(mp[a][b]>v) { mp[a][b]=mp[b][a]=v; //由于是无向图,所有保持对称矩阵 } } Prim(); int sum=0; //记录最小生成树所有边的权值 for(int i=1;i<n;i++) { sum+=cost[i]; } if(sum>Max) printf("impossible\n"); else printf("%d\n",sum); printf("\n"); } return 0; } ```
我用这个代码做不出来,希望大佬们能给我一个完整的能运行的程序代码,谢谢。
想要图中的结果但是出不来 ![图片说明](https://img-ask.csdn.net/upload/201812/06/1544086701_15340.jpg) #include<string.h> // 字符串函数头文件   #include<ctype.h> // 字符函数头文件   #include<malloc.h> // malloc()等   #include<limits.h> // INT_MAX等    #include<stdio.h> // 标准输入输出头文件,包括EOF(=^Z或F6),NULL等   #include<stdlib.h> // atoi(),exit()    #include<io.h> // eof()    #include<math.h> // 数学函数头文件,包括floor(),ceil(),abs()等    #include<sys/timeb.h> // ftime()    #include<stdarg.h> // 提供宏va_start,va_arg和va_end,用于存取变长参数表  // 函数结果状态代码。在教科书第10页   #define TRUE 1   #define FALSE 0   #define OK 1   #define ERROR 0       typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等    typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE,第7、8章用到     // 赫夫曼树和赫夫曼编码的存储结构    typedef struct // 结点的结构,在教科书第147页  { unsigned int weight; // 结点的权值      unsigned int parent,lchild,rchild;    } HTNode,*HuffmanTree; // 动态分配数组存储赫夫曼树     typedef char **HuffmanCode; // 动态分配数组存储赫夫曼编码表           int min(HuffmanTree t,int i)    { // 返回赫夫曼树t的前i个结点中权值最小的树的根结点序号,函数select()调用     int j,m;      unsigned int k; // k存最小权值,初值取为不小于可能的值(无符号整型最大值)     for(j=1;j<=i;j++) // 对于前i个结点        if(t[j].parent==0) // t[j]的权值小于k,又是树的根结点       {  k=t[j].weight; // t[j]的权值赋给k         m=j; // 序号赋给m        }      t[m].parent=1; // 给选中的根结点的双亲赋非零值,避免第2次查找该结点     return m; // 返回权值最小的根结点的序号   }      void select(HuffmanTree t,int i,int &s1,int &s2)   { // 在赫夫曼树t的前i个结点中选择2个权值最小的树的根结点序号,s1为其中序号(权值)较小的         int j;        s1=min(t,i); // 权值最小的根结点序号     s2=min(t,i); // 权值第2小的根结点序号        if(s1>s2) // s1的序号大于s2的     { // 交换        j=s1;        s1=s2; // s1是权值最小的2个中序号较小的       s2=j; // s2是权值最小的2个中序号较小的     }     }       void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int* w,int n) // 算法6.12   { // w存放n个字符的权值(均>0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC     int start;      unsigned f;   // 以下是从叶子到根逆向求每个字符的赫夫曼编码   int m,i,s1,s2;     unsigned c;     HuffmanTree p;      char *cd;      if(n<=1) // 叶子结点数不大于n        return;      m=2*n-1; // n个叶子结点的赫夫曼树共有m个结点      HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); // 0号单元未用      for(p=HT+1,i=1;i<=n;++i,++p,++w) // 从1号单元开始到n号单元,给叶子结点赋值    { // p的初值指向1号单元        (*p).weight=*w; // 赋权值        (*p).parent=0; // 双亲域为空(是根结点)        (*p).lchild=0; // 左右孩子为空(是叶子结点,即单结点树)       (*p).rchild=0;      }      for(;i<=m;++i,++p) // i从n+1到m        (*p).parent=0; // 其余结点的双亲域初值为0      for(i=n+1;i<=m;++i) // 建赫夫曼树      { // 在HT[1~i-1]中选择parent为0且weight最小的两个结点,其序号分别为s1和s2       select(HT,i-1,s1,s2);        HT[s1].parent=HT[s2].parent=i; // i号单元是s1和s2的双亲       HT[i].lchild=s1; // i号单元的左右孩子分别是s1和s2 HT[i].rchild=s2;        HT[i].weight=HT[s1].weight+HT[s2].weight; // i号单元的权值是s1和s2的权值之和     }      HC=(HuffmanCode)malloc((n+1)*sizeof(char*));    // 分配n个字符编码的头指针向量([0]不用)      cd=(char*)malloc(n*sizeof(char)); // 分配求编码的工作空间     cd[n-1]='\0'; // 编码结束符     for(i=1;i<=n;i++)      { // 逐个字符求赫夫曼编码       start=n-1; // 编码结束符位置        for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) // 从叶子到根逆向求编码         if(HT[f].lchild==c) // c是其双亲的左孩子           cd[--start]='0'; // 由叶子向根赋值'0'         else // c是其双亲的右孩子            cd[--start]='1'; // 由叶子向根赋值'1'        HC[i]=(char*)malloc((n-start)*sizeof(char)); // 为第i个字符编码分配空间       strcpy(HC[i],&cd[start]); // 从cd复制编码(串)到HC     }      free(cd); // 释放工作空间   }     void main()   {      HuffmanTree HT;     HuffmanCode HC;      int *w,n,i;      printf("请输入权值的个数(>1):");      scanf("%d",&n);      w=(int*)malloc(n*sizeof(int)); // 动态生成存放n个权值的空间     printf("请依次输入%d个权值(整型):\n",n);     for(i=0;i<=n-1;i++)        scanf("%d",w+i); // 依次输入权值      HuffmanCoding(HT,HC,w,n); // 根据w所存的n个权值构造赫夫曼树HT,n个赫夫曼编码存于HC      for(i=1;i<=n;i++)        puts(HC[i]); // 依次输出赫夫曼编码 }
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
深析Synchronized关键字(小白慎入,深入jvm源码,两万字长文)
目录一、synchronized基础1.1synchronized的使用1.1示例1.2验证1.2.1 普通方法和代码块中使用this是同一个监视器(锁),即某个具体调用该代码的对象1.2.2 静态方法和代码块中使用该类的class对象是同一个监视器,任何该类的对象调用该段代码时都是在争夺同一个监视器的锁定1.2、synchronized的特点二、synchronized进阶2.1对象头2.2sy
GitHub 总星 4w+!删库?女装?表情包?这些沙雕中文项目真是我每天快乐的源泉!
大家好,我是 Rocky0429,一个喜欢在 GitHub 上瞎逛的蒟蒻… 好看的皮囊千篇一律,有趣的灵魂没有底线。作为全球最大的同性交友网站,GayHub GitHub 上不止有鲜活的代码,秃头的算法,还有很多拥有有(sha)趣(diao)灵魂的宝藏。 还记得我之前给大家介绍的 Sorry 项目嘛,一个可以自己做表情包的项目,这个的沙雕程度在下面这些项目面前只能算弟弟。虽然说沙雕不分国...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
这篇博客总结了面试中最常见的微服务面试题,相信对你有所帮助。
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
C语言数字图像处理---1.4直方图拉伸和直方图均衡化
本篇将延续上一篇的内容,对直方图进行扩展,讲述直方图拉伸和直方图均衡化两个内容,并通过简单的C语言来实现这两个基础功能,让初学者通俗易懂。
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
推荐一些有趣的在线编程游戏
1.Robocode 让坦克们互相博弈的游戏,你可以看到它们飞奔,碾碎一切挡道的东西。机器人配有雷达与火炮,选手在躲避对手进攻的同时攻击对手,以此来较量得分的多少。这个游戏很有意思,曾经令我沉迷… 你可以用Java、Scala、C#等编程语言,编写人工智能程序,驱动机器人。 2.Code Combat Code Combat是一款学习编程的角色扮演游戏。每一关都用任务的形式设立目标,用实时的反馈...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
立即提问