去英特尔面试,被无声无息了。据说是headcount取消了,呜呜。
发出上机题,供广大程序兄弟参考。
题目(上机,一个小时时间):
输入一串数字,如:3 3 1 2 3 4 5 6 7 8 9
第一个数字表示行数,第二个表示列数,后面的表示矩阵里的值。生成的矩阵如下:
1 2 3
4 5 6
7 8 9
然后按顺时针方向螺旋输出,在上面的例子中,顺序是:1 2 3 6 9 8 7 4 5
要求输入输出如下:
Input:
3 3 1 2 3 4 5 6 7 8 9
1 3 1 2 3
Output:
1 2 3 6 9 8 7 4 5
1 2 3
说实话比较简单,也没规定用什么语言,我用python写的,45分钟的样子:
'''
Created on 2010-6-21
@author: maodouzi
'''
import os, sys
def buildMatrix (inputList):
# print rowNum, colNum
inputListTrim = inputList[2:]
# print inputListTrim
inputMatrix = []
tmpCount = 0
for tmpRowNum in range(rowNum):
tmpList = []
for tmpColNum in range(colNum):
# print tmpRowNum, tmpColNum, tmpCount
tmpList.append(inputListTrim[tmpCount])
tmpCount += 1
inputMatrix.append(tmpList)
return inputMatrix
def outputMatrix (inputMatrix):
inputMatrixBuf = inputMatrix
outputList = []
while (len(inputMatrixBuf) > 0):
tmpList = []
tmpList = [tmpStr for tmpStr in inputMatrixBuf[0]]
inputMatrixBuf = inputMatrixBuf[1:]
outputList += tmpList
if (len(inputMatrixBuf) == 0):
break
tmpList = []
for tmpCount in range(len(inputMatrixBuf)):
tmpList.append(inputMatrixBuf[tmpCount].pop())
outputList += tmpList
if (len(inputMatrixBuf) == 0):
break
tmpList = []
tmpListBuf = []
tmpListBuf = reversed(inputMatrixBuf[-1])
tmpList = [tmpStr for tmpStr in tmpListBuf]
inputMatrixBuf = inputMatrixBuf[:-1]
outputList += tmpList
if (len(inputMatrixBuf) == 0):
break
tmpList = []
for tmpCount in range((len(inputMatrixBuf) - 1), -1, -1):
tmpList.append(inputMatrixBuf[tmpCount][0])
inputMatrixBuf[tmpCount] = inputMatrixBuf[tmpCount][1:]
outputList += tmpList
# print inputMatrixBuf
return outputList
inputListStr = raw_input("Input:\n")
inputList = inputListStr.split()
#print inputList
if (len(inputList) < 2):
sys.exit("Could not got row & col numbers!")
rowNum = int(inputList[0])
colNum = int(inputList[1])
if ((rowNum * colNum) != (len(inputList) - 2)):
sys.exit("Wrong Arguments Number!")
inputMatrix = buildMatrix(inputList)
#print inputMatrix
outputList = outputMatrix(inputMatrix)
print "output:"
print " ".join(outputList)