面试题(来自程序员面试宝典)
来源:互联网 发布:七天网络成绩查询网页 编辑:程序博客网 时间:2024/05/01 23:21
面试例题:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?
(中国台湾著名感伤公司2007年11月面试题)
#include <stdio.h>
#include <iostream>
int main()
{
int N;
int s,i,j;
int squa;
scanf("%d",&N);int **a = (int **)malloc(N*sizeof(int *)); //特别要注意这里的*号
if(a == NULL)
return 0;
for (i=0; i<N; i++)
{
if ((a[i] = (int *)malloc(N*sizeof(int))) == NULL)
{
while (--i>0)
{
free(a[i]);
}
free(a);
return 0;
}
}squa = N*N;
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
{
s = i + j;
if (s<N)//三角形,求面积,加上偏移
{
a[i][j] = s*(s+1)/2 + (((i+j)%2 == 0) ? i : j);
}
else//转换成上面的方式
{
s = (N-1-i) + (N-1-j);
a[i][j] = squa - s*(s+1)/2 -(N-(((i+j)%2)? i : j));
}
}
}for (i=0;i<N; i++)
{
for (j=0; j<N; j++)
{
printf("%6d",a[i][j]);
}
printf("\n");
}
}
这里有一外小问题,就是上面的星号,如果是int型的,结果没有问题。但如果是其它类型结果就去出错。
双重指针要分配内存首先是给*p分配。运行结果如下:
- 面试题(来自程序员面试宝典)
- 面试题(来自程序员面试宝典)
- 程序员面试宝典部分面试题
- 【程序员面试宝典】数组相关面试题
- 【程序员面试宝典】字符串相关面试题
- 关于《程序员面试宝典》中的一道面试题的答案
- 122道Java面试题 Java程序员面试宝典
- 关于《程序员面试宝典》中一道面试题的答案
- // 程序员面试宝典第三版29页 面试题1
- 由《程序员面试宝典》引申的JS面试题
- 【程序员面试宝典】链表相关面试题
- 【程序员面试宝典】栈和队列相关面试题
- C/C++经典面试题总结摘选 C/C++程序员面试宝典(一)
- C/C++经典面试题总结摘选 C/C++程序员面试宝典(二)
- C/C++经典面试题总结摘选 C/C++程序员面试宝典(三)
- 程序员面试宝典试题总结
- 面试宝典:C语言面试题总汇(一)
- 面试宝典:(C语言面试题)总汇
- ipad通过笔记本上网win7
- hdfs写文件过程
- GridView 悬停某一列上显示相关图片
- TOMCAT配置文件详解
- Android中的消息通知(NotificationManager和Notification)
- 面试题(来自程序员面试宝典)
- Duilib 入门教程: 怎么创建一个自定义的窗口
- event.keycode值大全[转]
- jfreechart的中文api
- Windows7部署Android开发环境傻瓜式教程(Eclipse+ADT) (转)
- VS2008和VC6的调试器转换
- Android USB 驱动分析[转]
- [WPF,XAML] 跳动的心
- ssh localhost经过配置后,还是出现密码问题