一道面试题
来源:互联网 发布:信捷plc编程教学视频 编辑:程序博客网 时间:2024/06/06 18:09
同学去面试,一道面试题没做出来回来给我们讲了下,早上起床做一下。
#include <iostream>#include <assert.h>using namespace std;int main(){int n,m,i,j;int count=1;int **p=NULL;bool **q=NULL;cout<<"输入一个数n:"<<endl;cin>>n;m=n;p=(int **)new int[n];q=(bool **)new bool[n]; assert(p!=NULL&&q!=NULL);for (i=0;i<n;i++){p[i]=new int[n];}for (i=0;i<n;i++){q[i]=new bool[n];} for(i=0;i<n;i++) for(j=0;j<n;j++) q[i][j]=false; for(i=0;i<n;i++) for(j=0;j<n;j++) p[i][j]=0;i=0;j=0; while (m>0) { for (;i<n;i++) //插入列,行下标随之改变 { if (i<n&&q[i][j]!=true) { p[i][j]=count++; q[i][j]=true; } else{break; } } i--; j++; for (;j<n;j++) //插入行,列下标随之改变 { if (j<n&&q[i][j]!=true) { p[i][j]=count++; q[i][j]=true; } else { break; } } j--; i--; for (;i>=0;i--) //倒序插入列,行下标随之改变 { if (i>=0&&q[i][j]!=true) { p[i][j]=count++; q[i][j]=true; } else { break; } } i++; j--; for (;j>0;j--) //倒序插入行,列下标随之改变 { if (j>0&&q[i][j]!=true) { p[i][j]=count++; q[i][j]=true; } else{ break; } } j++; i++; m--; }for(i=0;i<n;i++){for(j=0;j<n;j++){cout<<p[i][j]<<" ";}cout<<endl;}//for()for(i=0;i<n;i++){delete[] p[i];delete[] q[i];}p=NULL;q=NULL;//delete[] p;//delete[] q;system("pause");return 0;}
- 一道微软面试题
- 一道面试题
- 华为一道面试题
- 一道面试题
- 一道面试题
- 一道sql面试题
- 一道面试题
- 一道面试题
- 一道华为面试题
- 一道面试题
- 一道微软面试题
- 一道c++面试题
- 一道sql面试题
- 关于一道面试题
- 一道面试题
- 一道microsoft面试题
- 一道javascript面试题
- 一道面试题
- OSCache介绍
- 在Oracle库中查找所有表的相关信息
- ORA-27101: shared memory realm does not exist 错误的处理
- down_interruptible()
- log4j中配置日志文件相对路径
- 一道面试题
- java环境配置
- 前端开发 如何提高工作效率
- linux周六
- KScope安装
- virtual destructor的使用
- Linux hrtimer的实现
- Linux history命令用法
- java线程学习