望麓自卑—湖南大学最具潜力的校园传媒

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: stephenmjm

湖南大学计算机与通信学院2007年保研能力测试(机试题目+部分解题报告)

  [复制链接]
 楼主| 发表于 2008-7-19 00:15:08 | 显示全部楼层

解题报告RSA

游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2008-7-19 00:16:20 | 显示全部楼层

解题报告:“快乐男生”演唱会

游客,如果您要查看本帖隐藏内容请回复
 楼主| 发表于 2008-7-19 00:22:32 | 显示全部楼层

解题报告:合并果子

游客,如果您要查看本帖隐藏内容请回复
发表于 2008-7-26 19:58:52 | 显示全部楼层
这都被你找出来了哈哈...
今年计通院可能还会继续搞吧...去年我成了最大的受益者,今年不知道还有谁
题目都是比较简单,去年那个数论的没搞出来,数学太挫,反正切也没做出来。
发表于 2008-8-20 00:17:02 | 显示全部楼层
还要回复啊
发表于 2008-9-10 00:45:30 | 显示全部楼层
你好
我想看一下答案
谢谢
发表于 2008-9-11 08:51:29 | 显示全部楼层
不错 顶起
发表于 2008-9-11 21:36:28 | 显示全部楼层
又一年保研...此贴能火一阵吧...
发表于 2008-9-13 23:02:25 | 显示全部楼层
呵呵,真好
发表于 2008-9-14 11:57:12 | 显示全部楼层
好帖呀!找了好久了。想看看网络传输的答案
发表于 2008-9-17 10:00:26 | 显示全部楼层
顶!!!
发表于 2008-9-17 12:31:33 | 显示全部楼层
引用第21楼doudou于2008-09-14 11:57发表的:
好帖呀!找了好久了。想看看网络传输的答案
第一个程序是没用c++写的,后面那个程序是测试时候写的。
算法很简单的,像FloodFill吧,也就是广搜下
#include <stdio.h>
#define MAX 200
int map[MAX][MAX],n,st,ttl,total,t=1,lab[MAX],isv[MAX];
int bfs(int cc,int tt)
{
int i,j,k,rec[10000]={0},pt,pb,pe,vx;
pb=0;pe=0;pt=pe;rec[0]=cc;
for(i=0;i<tt;i++)
{
pt=pe;
for(j=pb;j<=pt;j++)
{
vx=rec[j];
isv[vx]=1;
for(k=1;k<=t;k++)
{
if(!isv[k] && map[vx][k])
{
isv[k]=1;
rec[++pe]=k;
}
}
}
pb=pt+1;
}
return t-pe-2;
}
int main()
{
int i,j,k,a,b;
scanf("%d",&n);
memset(lab,0,sizeof(lab));
memset(map,0,sizeof(map));
for(i=0;i<n;i++)
{
scanf("%d%d",&a,&b);
if(!lab[a]) lab[a]=t++;
if(!lab) lab=t++;
map[lab[a]][lab]=1;
map[lab][lab[a]]=1;
}
while(scanf("%d%d",&st,&ttl),st+ttl)
{
total=0;
memset(isv,0,sizeof(isv));
printf("%d\n",bfs(lab[st],ttl));
}
return 0;
}

#include <iostream>
#include <string.h>
#include <map>

using namespace std;
#define MAX 100

int g[MAX][MAX];
int used[MAX];

int n;
map <int ,int > dic;

void floodfill(int pos,int ttl)
{
int i;
used[pos] = 1;
if (ttl==0) return ;
for(i=0;i<n;i++)
{
if(!used && g[pos]==1)
{
floodfill(i,ttl-1);
}
}
}

int main()
{
int i,j,fr,to,ans;
int cnt=1;
scanf("%d",&n);
memset(g,0,sizeof(g));
for(i=0;i<n;i++)
{
scanf("%d%d",&fr,&to);

if(dic[fr]==0)
{
dic[fr] = cnt++;
}
if(dic[to]==0)
{
dic[to] = cnt++;
}
g[dic[fr]-1][dic[to]-1] = 1;
g[dic[to]-1][dic[fr]-1] = 1;
}
n = cnt -1 ;
// for(i=0;i<n;i++){for(j=0;j<n;j++) printf("%d ",g[j]);printf("\n");}

int s,t;
while(scanf("%d%d",&s,&t),s+t)
{
memset(used,0,sizeof(used));
floodfill(dic-1,t);
for(ans=0,i=0;i<n;i++) if(!used) ans ++;
printf("%d\n",ans);
}
return 0;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

每日推荐上一条 /1 下一条

小黑屋|手机版|湖南大学望麓自卑校园传媒 ( 湘ICP备14014987号 )

GMT+8, 2024-11-27 18:01 , Processed in 0.109554 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表