wcy的初赛模拟题(1)纠错集

一、单项选择

1、以下与电子邮件无关的网络协议是

      A、SMTP        B、POP3        C、MIME        D、FTP

答案:D,FTP是文件传输协议

错因:不知道

2、布尔型变量占用(  )个比特位

A、1        B、2        C、4        D、8

答案:D,1布尔变量=1字节=8bit

错因:2*4=4他真的我哭死

3、由4个节点构成的形态不同的二叉树有( )种

A、16        B、14        C、20        D、10

答案:B

解析:令f[i]表示i个节点的二叉树个数,在f[0]=1,f[i]=\sum_{j=0}^{i-1} f[i]f[i-1-j],f[4]=14

4、一颗6节点二叉树的中序遍历为ABDGECF,先序遍历为DBACEF后序遍历为(  )

A、DGBEFAC        B、ABGEFCD        C、GBEACFD        D、ABCDEFG

答案:B

解析:由先序排序可得D为根,所以后序必须是D为最后一个,排除A、D

           由中序的G在右子树中,所以后序不可能以G为开头,排除C

            先序:DLR(根左右)中序:LDR(左根右)后序:LRD(左右根)

错因:自己的问题,把先、中、后序的顺序记反了

小补充:时间复杂度:冒泡排序:O(n*n)

二、阅读程序

1、

#includ<iostream>
using namespace std;
int a,b,c;
int main()
{
	cin>>a>>b>>c;
	a=b-a;
	b=b-a;
	a=b+a;
	c=b-a;
	cout<<a<<" "<<b<<" "<<c;
	return 0;
}

1、若输入123456789012 2 3,将输出2 123456789012 123456789010(  )

A、正确        B、错误 

答案:B

解析:123456789012超出了int的范围

错因:无脑狂爱int,不熟悉int的范围

2、将头文件<iostream>可以改成<cstdio>( )

A、正确        B、错误

答案:B

解析:cstdio不能cin,cout

错因:无脑狂爱万能头,其他一窍不通

2、

#include<bits/stdc++.h>
using namespace std;
#define maxn 105
int a[maxn][maxn],b[maxn][maxn];
int f(int m,int n)
{
	if(m<=0||n<=0) 
	{
		return 0;
	}
	a[0][0]=b[0][0];
	for(int i=1;i<n;i++) a[0][i]=a[0][i-1]+b[0][1];
	for(int i=1;i<m;i++) a[i][0]=a[i-1][0]+b[i][0];
	for(int i=1;i<m;i++)
	{
		for(int j=1;j<n;j++)
		{
			a[i][j]=min(a[i-1][j],a[i][j-1]+b[i][j]);
		}
	}
	return a[m-1][n-1];
} 
int main()
{
	int m,n;
	cin>>m>>n;
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>b[i][j];
		}
	}
	cout<<f(m,n);
	return 0;
}

分析:本代码是用DP求(0,0)——>(m-,n-1)的最短路

1、输入数据为:

        4 4

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

       则输出的结果为:

        A、28        B、16        C、136        D、46

答案:D

解析:经过的数字为1、2、3、4、8、12、16

错因:计算错误、对DP不是很熟

2、我们将上述算法成为( )

A、DFS        B、BFS        C、DP        D、贪心

答案:C

解析:DP是以左下或右下探索,BFS是从一点向四周,DFS是直接搜,贪心及更不可能了

错因:对于DP不是很熟

三、完善程序

1、 

#include<bits/stdc++.h>
using namespace std;
#define N 1001 
int n,m,x,y;
vector<int>G[N];//vector:流动线行数组,不可查位置,可以省掉大部分空间
stack<int>q;//栈,先头后尾
int cnt[N],tpc;
bool pd()
{
	for(int i=1;i<=N;i++) if(______) q.push(i);
	while(!q.empty())
	{
		int u=q.top();
		q.pop();
		pc++;
		for(int i-0;i<G[u].size();i++)
		{
			int v=G[u][i];o
			________
			if(!cnt[v])_______;
		}
	}
	if(__________) return 1;
	else return 0;
} 
int main()
{
	cin>>n>>m;
	while(m--)
	{
		cin>>x>>y;
		G[x].push_back(y);
		______________;		
	}	
	if(pd()) cout<<"存在有向环"; 
	else  cout<<"不存在有向环";
	return 0;
}

分析:(拓扑排序)输入一张n节点m条边的有向图,用该图的一个拓扑排序的方式判断该图是否存在有向环,若有拓扑排序输出排序,没有输出没有,否则则输出有

1、2处应该填( )

 A、q.push(v);        B、q.pop();        C、cnt[u]--;        D、cnt[v]--; 

答案:D      

解析:删除点u,将v的入读为-1

2、3处应该填( )

A、q.pop()        B、q.push(v);        C、tpc--;        D、tpc++

答案:B

解析:v的入度变为零时入队

3、5处应该填( )

A、cnt[x]++;                B、G[y].push(x);        C、cnt[y]++;        D、G[y].push_back(x);

答案:C

解析:单向边,将y的入度为1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
import matplotlib.pyplot as plt import numpy as np import pandas as pd data = pd.read_excel(r"G:\Data.xlsx") def dis(WC, data): WCX = (np.array(data['x']) * WC).sum() WCY = (np.array(data['y']) * WC).sum() x0 = WCX / WC.sum() y0 = WCY / WC.sum() d_j = ((np.array(data['x']) - x0) ** 2 + (np.array(data['y']) - y0) ** 2) ** 0.5 T = (WC * d_j).sum() print('重心法初始选点大致置:({},{})'.format(x0, y0)) print('总费用T0:{}'.format(T)) # 迭代10次 plt.rcParams['font.sans-serif'] = [u'SimHei'] for i in range(10): WC_j = WC / d_j WCX_j = ((np.array(data['x']) * WC) / d_j).sum() WCY_j = ((np.array(data['y']) * WC) / d_j).sum() x = WCX_j / WC_j.sum() y = WCY_j / WC_j.sum() d_j = ((np.array(data['x']) - x) ** 2 + (np.array(data['y']) - y) ** 2) ** 0.5 T = (WC * d_j).sum() print('经{}次迭代后选址点置:({},{})'.format(i + 1, x, y)) print('总费用T{}:{}'.format(i + 1, T)) # 画图,如果需要迭代次数多,建议只画第一次和最后一次 plt.figure(figsize=(8, 4)) plt.scatter(np.array(data['x']), np.array(data['y']), [300, 300, 300, 300, 300], c='green', marker='*', alpha=0.7, label='站点') plt.scatter(x, y, [270], c='red', marker='p', alpha=0.7, label='选址点') plt.xlabel('x坐标', fontsize=11) plt.ylabel('y坐标', fontsize=11) plt.grid(True) plt.title('重心法选址,第{}次结果示意图'.format(i + 1), fontsize=14) plt.show() if __name__ == '__main__': # 读取文件 data = pd.read_excel(r"C:\Users\pan15\Desktop\重心法\data.xlsx") # print(data) WC = np.array(data['W']) * np.array(data['C']) dis(WC, data)
最新发布
06-01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值