算法笔试Word文档下载推荐.docx

上传人:b****2 文档编号:15154579 上传时间:2022-10-28 格式:DOCX 页数:26 大小:23.73KB
下载 相关 举报
算法笔试Word文档下载推荐.docx_第1页
第1页 / 共26页
算法笔试Word文档下载推荐.docx_第2页
第2页 / 共26页
算法笔试Word文档下载推荐.docx_第3页
第3页 / 共26页
算法笔试Word文档下载推荐.docx_第4页
第4页 / 共26页
算法笔试Word文档下载推荐.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

算法笔试Word文档下载推荐.docx

《算法笔试Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《算法笔试Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。

算法笔试Word文档下载推荐.docx

2、求高于平均分的学生学号及成绩(学号和成绩人工输入)

doublefind(inttotal,intn)

intnumber,score,average;

scanf("

&

number);

if(number!

=0){

score);

average=find(total+score,n+1);

if(score>

=average)

%d\n"

number,score);

returnaverage;

}else{

Average=%d\n"

total/n);

returntotal/n;

}

find(0,0);

3、递归实现回文判断(如:

abcdedbca就是回文)

intfind(char*str,intn)

if(n<

=1)return1;

elseif(str[0]==str[n-1])returnfind(str+1,n-2);

elsereturn0;

char*str="

abcdedcba"

;

%s:

%s\n"

str,find(str,

strlen(str))?

"

Yes"

:

No"

);

4、组合问题(从M个不同字符中任取N个字符的所有组合)

voidfind(char*source,char*result,intn)

if(n==1){

while(*source)

%s%c\n"

result,*source++);

inti,j;

for(i=0;

source[i]!

=0;

i++);

for(j=0;

result[j]!

j++);

for(;

i>

=n;

i--)

{

result[j]=*source++;

result[j+1]='

\0'

find(source,result,n-1);

intconstn=3;

char*source="

ABCDE"

result[n+1]={0};

0&

&

strlen(source)>

n<

=strlen(source))

find(source,result,3);

5、分解成质因数(如435234=251*17*17*3*2)

voidprim(intm,intn)

if(m>

n){

while(m%n!

=0)n++;

m/=n;

prim(m,n);

%d*"

intn=435234;

%d="

prim(n,2);

6、寻找迷宫的一条出路(o:

通路;

X障碍)

#defineMAX_SIZE8

intH[4]={0,1,0,-1};

intV[4]={-1,0,1,0};

charMaze[MAX_SIZE][MAX_SIZE]={{'

X'

'

},

{'

o'

{'

}};

voidFindPath(intX,intY)

if(X==MAX_SIZE||Y==MAX_SIZE){

for(inti=0;

i<

MAX_SIZE;

for(intj=0;

j<

j++)

%c%c"

Maze[i][j],j<

MAX_SIZE-1?

'

\n'

}elsefor(intk=0;

k<

4;

k++)

if(X>

=0&

Y>

Y<

MAX_SIZE&

X<

==Maze[X][Y]){

Maze[X][Y]='

FindPath(X+V[k],Y+H[k]);

Maze[X][Y]='

FindPath(1,0);

7、随机分配座位,共50个学生,使学号相邻的同学座位不能相邻(早些时候用C#写的,没有用C改写)。

staticvoidMain(string[]args)

intTmp=0,Count=50;

int[]Seats=newint[Count];

bool[]Students=newbool[Count];

System.RandomRandStudent=newSystem.Random();

Students[Seats[0]=RandStudent.Next(0,Count)]=true;

for(inti=1;

Count;

Tmp=(int)RandStudent.Next(0,Count);

if((!

Students[Tmp])&

(Seats[i-1]-Tmp!

=1)&

(Seats[i-1]-Tmp)!

=-1){

Seats[i++]=Tmp;

Students[Tmp]=true;

foreach(intStudentinSeats)

System.Console.Write(Student+"

System.Console.Read();

8、求网格中的黑点分布(有6*7的网格,在某些格子中有黑点,已知各行与各列中有黑点的点数之和)

#defineROWS6

#defineCOLS7

intiPointsR[ROWS]={2,0,4,3,4,0};

//各行黑点数和的情况

intiPointsC[COLS]={4,1,2,2,1,2,1};

//各列黑点数和的情况

intiCount,iFound;

intiSumR[ROWS],iSumC[COLS],Grid[ROWS][COLS];

intSet(intiRowNo)

if(iRowNo==ROWS){

for(intiColNo=0;

iColNo<

COLS&

iSumC[iColNo]==iPointsC[iColNo];

iColNo++)

if(iColNo==COLS-1){

\nNo.%d:

\n"

++iCount);

ROWS;

for(intj=0;

COLS;

%d%c"

Grid[i][j],(j+1)%COLS?

iFound=1;

//iFound=1,有解

iColNo++)

if(iPointsR[iRowNo]==0){

Set(iRowNo+1);

}elseif(Grid[iRowNo][iColNo]==0){

Grid[iRowNo][iColNo]=1;

iSumR[iRowNo]++;

iSumC[iColNo]++;

if(iSumR[iRowNo]<

iPointsR[iRowNo]&

iSumC[iColNo]<

=iPointsC[iColNo])

Set(iRowNo);

elseif(iSumR[iRowNo]==iPointsR[iRowNo]&

iRowNo<

ROWS)

Grid[iRowNo][iColNo]=0;

iSumR[iRowNo]--;

iSumC[iColNo]--;

returniFound;

//用于判断是否有解

if(!

Set(0))

Failure!

9、有4种面值(面值为1,4,12,21)的邮票很多枚,从中最多任取5张进行组合,求邮票最大连续组合值

#defineN5

#defineM5

intk,Found,Flag[N];

intStamp[M]={0,1,4,12,21};

//在剩余张数n中组合出面值和Value

intCombine(intn,intValue)

if(n>

Value==0){

Found=1;

intSum=0;

N&

Flag[i]!

i++){

Sum+=Stamp[Flag[i]];

%d"

Stamp[Flag[i]]);

\tSum=%d\n\n"

Sum);

}elsefor(inti=1;

M&

!

Found&

n>

0;

if(Value-Stamp[i]>

Flag[k++]=i;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1