ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

C语言day1递归和分治

C语言day1递归和分治 #includestdio.h int f(int n){ if(n2){ int resultf(n-1)f(n-2); return result; } else if(n2){ return 2; } else if(n1)} return 1; } } int main(){ int n4; printf(f(n)%d,f(n)); return 0;1.爬梯子问题void han(int n ,char qi,char buffer,char zhong){ if(n1){ han(n-1,qi,zhong,buffer); han(1,qi,buffer,zhong); han(n-1,buffer,qi,zhong); } else if(n1){ printf(move %c to %c \n,qi,zhong); } int main(){ int n5; han(n,a,b,c); return 0; }2.汉诺塔问题void merge(int* arr,int* temp,int left,int mid,int right) { //arr[left]-arr[mid]和arr[mid1]-arr[right]进行合并 //将arr的内容访问到temp中 for(int ileft;iright;i) { temp[i]arr[i]; } //i访问左半边j访问右半边k存放结果 int i,j,k; for(i left,jmid 1,kleft;imidjright;k){ if(temp[i]temp[j]){ arr[k]temp[i]; i; } else{ arr[k]temp[j]; j; } //处理左边没放完的数据 while(imid){ arr[k]temp[i]; i; k; } //处理右边没放完的数据 while(jright){ arr[k]temp[j]; j; k; } //合并做完 } } void mergeSort(int* arr,int *temp,int left,int right){ if(leftright){ int mid (leftright)/2; mergeSort(arr,temp,left,mid); mergeSort(arr,temp,mid1,right); merge(arr,temp,left,mid,right); } } int main(){ int arr[]{3,87,2,92,32,53,54,6,56,95}; int temp[10]; mergeSort(arr,temp,0,9); return 0; }3.归并排序
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进