算法导论 思考题 6-3 c,d,e小题
来源:互联网 发布:图布局算法 编辑:程序博客网 时间:2024/05/16 08:21
#include <stdio.h>#include <limits.h>#define LEN 4int YExtractMin(int a[LEN][LEN]){int r=a[0][0];a[0][0]=INT_MAX;int i=0,j=0,temp;bool flag=false;while(i+1<LEN || j+1<LEN){flag=false;if(i+1<LEN && j+1<LEN){if(a[i+1][j]<a[i][j] && a[i+1][j]<a[i][j+1]){temp=a[i+1][j];a[i+1][j]=a[i][j];a[i][j]=temp;i=i+1;flag=true;}if(a[i][j+1]<a[i][j] && a[i][j+1]<a[i+1][j]){temp=a[i][j+1];a[i][j+1]=a[i][j];a[i][j]=temp;j=j+1;flag=true;}}else{if(i+1<LEN){if(a[i+1][j]<a[i][j]){temp=a[i+1][j];a[i+1][j]=a[i][j];a[i][j]=temp;i=i+1;flag=true;}}else{if(a[i][j+1]<a[i][j]){temp=a[i][j+1];a[i][j+1]=a[i][j];a[i][j]=temp;j=j+1;flag=true;}}}if(!flag){break;}}return r;}void decreaseKey(int a[LEN][LEN],int key,int i,int j){if(key>a[i][j]){printf("新键必须小于原键!");return;}a[i][j]=key;bool flag=false;int temp;while(i-1>=0 || j-1>=0){flag=false;if(i-1>=0 && j-1>=0){if(a[i-1][j]>a[i][j] || a[i][j-1]>a[i][j]){if(a[i-1][j]>a[i][j-1]){temp=a[i][j];a[i][j]=a[i-1][j];a[i-1][j]=temp;i--;flag=true;}else{temp=a[i][j];a[i][j]=a[i][j-1];a[i][j-1]=temp;j--;flag=true;}}}else if(i-1>=0){if(a[i-1][j]>a[i][j]){temp=a[i][j];a[i][j]=a[i-1][j];a[i-1][j]=temp;i--;flag=true;}}else{if(a[i][j-1]>a[i][j]){temp=a[i][j];a[i][j]=a[i][j-1];a[i][j-1]=temp;j--;flag=true;}}if(!flag){break;}}}void printA(int a[LEN][LEN]){for(int i=0;i<LEN;i++){for(int j=0;j<LEN;j++){if(a[i][j]<INT_MAX)printf("%d ",a[i][j]);elseprintf("* ");}printf("\n");}}void Yinsert(int a[LEN][LEN],int key){decreaseKey(a,key,LEN-1,LEN-1);}void Ysort(int a[LEN][LEN]){int t;do{t=YExtractMin(a);if(t!=INT_MAX)printf("%d ",t);}while(t!=INT_MAX);}bool YfindKey(int a[LEN][LEN],int key){int t=YExtractMin(a);while( t != INT_MAX){if(t==key)return true;if(t>key){return false;}t=YExtractMin(a);}}void main(){int a[LEN][LEN]={{2,3,4,5},{8,9,12,14},{16,INT_MAX,INT_MAX,INT_MAX},{INT_MAX,INT_MAX,INT_MAX,INT_MAX}};//YExtractMin(a);//decreaseKey(a,1,1,3);Yinsert(a,1);printA(a);//Ysort(a);bool b=YfindKey(a,5);printf("%d",b);getchar();}
0 0
- 算法导论 思考题 6-3 c,d,e小题
- 算法导论 思考题 16-1 d小题 找零问题
- 算法导论 思考题 3-6
- 算法导论思考题6-2:d叉堆
- 算法导论思考题:6-3Young 矩阵
- 算法导论思考题9-3小顺序统计量问题
- 算法导论思考题[6-2]
- 算法导论 思考题 6-2
- 算法导论 思考题 2-3
- 算法导论 思考题 2-3
- 算法导论 思考题 3-2
- 算法导论 思考题 3-4
- 算法导论 思考题 8-3
- 算法导论 思考题 9-3
- 算法导论第三版 第三章 思考题 3-6
- 算法导论思考题6-3:Young氏矩阵
- 算法导论第六章思考题6-2: 对d堆的分析
- 算法导论之2-3思考题
- Spring MVC学习(七)-------SpringMVC数据类型转换
- 手把手教你写Linux设备驱动---中断(三)--workqueue实现(基于友善之臂4412开发板)
- scalaJS初探
- PLSQL的安装和配置
- 【压箱底】Android OpenCV人脸检测+蓝牙控制小车
- 算法导论 思考题 6-3 c,d,e小题
- 2016东莞市特长生考试 子数整数
- editplus,notepad++,ultraEdit使用技巧(附实用快捷键)(多年总结,待完善)
- 23种设计模式的总结~以及区别、应用
- Java 中方法的重写,重载与覆盖的关系
- CAFFE 学习-1:基本的CAFFE结构
- azkaban 创建工作流
- 包裹快递 jzoj1396 二分
- empty()函数深度讲解