上周面试遇到的几个问题,与大家分享!

orrin 2003-04-14 03:19:40
1、 4个棋子,放在4x4的棋盘上,让斜、横、竖最多只有一个棋子的摆法有多少种?
2、 5封信,5个信封,假设一个信封只能装一封信,问有多少种完全装错的可能?
3、 用一句sql语句找出表td customer中的主关键字段。
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
心云意水 2003-04-14
  • 打赏
  • 举报
回复
第一个问题:2种。纠正一下:是四王后,不是八个:)
程序实现:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>四皇后算法演示</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<style>
TD{padding-left: 12px; background-color: white}
</style>
</HEAD>

<BODY>
<!-- 棋盘布局 -->
<table id="h_Board" border="0" style="background-color:#336699">
<tr>
<td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td> </td><td> </td><td> </td><td> </td>
</tr>
<tr>
<td> </td><td> </td><td> </td><td> </td>
</tr>
</table>

<BR>
<table id="h_MakeTabBox">
<tr>
</tr>
</table>
<BR>
<SCRIPT LANGUAGE="JavaScript">
<!--
var aoPlayList = new Array(); // 演示动作播放表
var aoMakeTab = new Array(); // 有效棋盘 完成的帧
var iPlayFrame = 0; // 播放帧
var iMakeTab = 0;


function fnRunBoard(v_iRow, v_iCount)
{
var t_aoOne;

if(v_iRow >= v_iCount)
aoMakeTab[aoMakeTab.length] = aoPlayList.length -1;
else
{

for(i=0; i < v_iCount; i++)
{
//alert("判断到 i:"+i);
t_aoOne = fnAddOne(v_iRow, i); // 加入播放表--放置棋子,并返回 [row,cell] 的数组

if( fnCanNext(t_aoOne, v_iCount) ) // 如果符合要求,则进行下一行的布置
{
//alert("通过 r:"+t_aoOne[0]+" c:"+t_aoOne[1]);
fnRunBoard(v_iRow+1, v_iCount);
}
else
{
//alert("不通过 r:"+t_aoOne[0]+" c:"+t_aoOne[1]);
}
fnDeleteOne(v_iRow, t_aoOne[1]); // 加入播放列表--移除棋子
i = t_aoOne[1];
}
}
}

//
// 放置棋子 fnAddOne
//
function fnAddOne(v_iRow, v_iCell)
{
var t_aoArray = new Array(v_iRow, v_iCell);

aoPlayList[aoPlayList.length] = "A|"+v_iRow+"|"+v_iCell; // 加入到动作播放列表
try
{
h_Board.rows[v_iRow].cells[v_iCell].title = "H"; // 在对应的单元格内放置标志,用于判断
}
catch(e)
{
return alert("R "+ v_iRow+ " C " + v_iCell);
}

return t_aoArray;
}

//
// 移除棋子 fnDeleteOne
//
function fnDeleteOne(v_iRow, v_iCell)
{
aoPlayList[aoPlayList.length] = "D|"+v_iRow+"|"+v_iCell; // 加入到动作播放列表



h_Board.rows[v_iRow].cells[v_iCell].title = ""; // 移除在对应的单元格内标志,用于判断
}

//
// 判断是否可以进行下一步 fnCanNext
//
function fnCanNext(v_aoOne, v_iCount)
{
var t_iCount;
var t_r, t_c;

// 判断行
for(t_iCount=0,i=0; i<v_iCount; i++)
{
if(h_Board.rows[ v_aoOne[0] ].cells[i].title == "H")
t_iCount++;
}
if(t_iCount > 1) return false;

// 判断列
for(t_iCount=0,i=0; i<v_iCount; i++)
{
if(h_Board.rows[i].cells[ v_aoOne[1] ].title == "H")
t_iCount++;
}
if(t_iCount > 1) return false;

// 判断下斜
t_iCount = 1;
t_r = v_aoOne[0];
t_c = v_aoOne[1];
while(--t_r+1 && --t_c+1)
if(h_Board.rows[t_r].cells[t_c].title == "H")
t_iCount++;
t_r = v_aoOne[0];
t_c = v_aoOne[1];
while(++t_r<v_iCount && ++t_c<v_iCount)
if(h_Board.rows[t_r].cells[t_c].title == "H")
t_iCount++;

if(t_iCount > 1) return false;

// 判断上斜
t_iCount = 1;
t_r = v_aoOne[0];
t_c = v_aoOne[1];
while(--t_r+1 && ++t_c<v_iCount)
if(h_Board.rows[t_r].cells[t_c].title == "H")
t_iCount++;
t_r = v_aoOne[0];
t_c = v_aoOne[1];
while(++t_r<v_iCount && --t_c+1)
if(h_Board.rows[t_r].cells[t_c].title == "H")
t_iCount++;

if(t_iCount > 1) return false;

return true;
}


//
// 播放动作列表
//
function fnPlayList()
{

var t_aoArray;
if(iPlayFrame+1 <= aoPlayList.length)
{
t_aoArray = aoPlayList[iPlayFrame++].split("|");

if(t_aoArray[0]=="A")
h_Board.rows[ parseInt(t_aoArray[1]) ].cells[ parseInt(t_aoArray[2])].style.backgroundColor = "yellow";
else
h_Board.rows[ parseInt(t_aoArray[1]) ].cells[ parseInt(t_aoArray[2])].style.backgroundColor = "";

if(iMakeTab < aoMakeTab.length && iPlayFrame - 1 == aoMakeTab[iMakeTab])
{
iMakeTab++;
h_MakeTabBox.rows[0].insertCell().innerHTML = h_Board.outerHTML.replace(/h_Board/,"0");
}
}
else
return;

setTimeout("fnPlayList()", 100);

}

function BeginGame()
{
fnRunBoard(0, 4);
iPlayFrame = 0;
fnPlayList();

h_PlayBtn.disabled = true;


}
//-->
</SCRIPT>
<INPUT TYPE="submit" value="分析并演示" name="h_PlayBtn" onclick="BeginGame()" >
</BODY>
</HTML>
wanghui0380 2003-04-14
  • 打赏
  • 举报
回复
呵呵,第一个问题是很早以前的初中计算机奥赛的题目愿是八王后在国际象棋棋盘上的摆法,很简单的循环加判断就行了。第二个问题是组合题应该是:全部的可能-全装正确的可能。最后那个只不过是一比较负扎的sql语句嘛
xiwanghope 2003-04-14
  • 打赏
  • 举报
回复
晕,如果进这个公司它给多少钱?赫赫
holywars 2003-04-14
  • 打赏
  • 举报
回复
找本算法的书看看吧!!
jason2008 2003-04-14
  • 打赏
  • 举报
回复
哇噻

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧