‘壹’ 智力题算法
最早的智商计算方法是一个法国心理研究者发明的。
原理是:智力年龄/实际年龄*100=智商
‘贰’ 关于算法的选择题
即使用来排序
那排序后的有序列也算是输出
输出指的是有结果
‘叁’ 算法题。。
//这是我提交的代码,仅供参考
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
structNode
{
intX;
intY;
intY_tmp;
intl;
intr;
intcapacity;
}node[100001];
intN,R;
intcmp(structNode*a,structNode*b)
{
returna->r-b->r;
}
intIs_Sucess(intmiddle)
{
inti,j,start=0;
for(i=0;i<N;i++)
{
node[i].capacity=middle;
j=start;
while(node[i].capacity>0&&node[j].l<=node[i].X&&j<N)
{
/* if(node[j].Y_tmp==0)
{
j++;
continue;
}*/
if(node[j].r<node[i].X&&node[j].Y_tmp>0)
return0;
if(node[j].l<=node[i].X&&node[j].r>=node[i].X)
{
if(node[i].capacity>=node[j].Y_tmp)
{
node[i].capacity-=node[j].Y_tmp;
node[j].Y_tmp=0;
start=j+1;
}
else
{
node[j].Y_tmp-=node[i].capacity;
node[i].capacity=0;
}
}
j++;
}
}
if(node[N-1].Y_tmp>0)
return0;
return1;
}
intBinary_Search(inthigh,intlow)
{
inti,middle;
while(high!=low)
{
middle=(high+low)/2;
for(i=0;i<N;i++)
node[i].Y_tmp=node[i].Y;
if(Is_Sucess(middle))
high=middle;
else
low=middle+1;
}
returnhigh;
}
intmain()
{
intT;
inti,j;
inthigh;
longlongintlow;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&N,&R);
low=0;
high=0;
for(i=0;i<N;i++)
{
scanf("%d%d",&node[i].X,&node[i].Y);
node[i].l=node[i].X-R;
node[i].r=node[i].X+R;
if(high<node[i].Y)
high=node[i].Y;
low+=node[i].Y;
}
qsort(node,N,sizeof(node[0]),cmp);
low=low/N;
high=Binary_Search(high,low);
printf("%d ",high);
}
system("pause");
return0;
}
‘肆’ 关于一些VB算法题目
下面代码是生成[0,30]这一闭区间的随机整数,并显示在Text1中:
Private Sub Command1_Click()
Dim i As Single
Text1.Text = ""
Randomize
i = Int(Rnd * 31)
Text1.Text = i
End Sub
不是整数不好编!
如果是开区间的(0,30),可以这样写:
Private Sub Command1_Click()
Dim i As Single
Randomize
i = Int((Rnd * 29) + 1)
Text1.Text = i
End Sub
固定公式是:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里,“upperbound”是随机数范围的上限,而“lowerbound”则是随机数范围的下限。
For...Next是一个循环控制语句,当循环次数确定的时候建议使用For语句,而当循环次数不确定的时候建议用Do...Loop之类的语句。
补充:
①.VB中的随机函数有且只有一个,如果你想到其他方法最好!
②.要生成小数可以考虑“4xguys”里面的除以某个数,这样就生成了!
‘伍’ 几个关于算法的题目
第1题,先统计一下每一点的入度和出度,出度代表认为几个人,入度代表被几个人认识。
最后看看哪一个人的入度是==n-1,出度是0的就行
大整数相乘的话可以模拟小学生摆竖式。
先把数字的每一位存在整型数组中。
然后一位一位乘过去。把结果加起来就行。复杂度是n*m
最后一个是状态压缩DP
设dp[i][j]代表前i-1已经摆好,第i行每一状态是j的情况下的种数。
然后按行行转移。
复杂度是2^n*2^n*n
‘陆’ 算法的题目
自然语言法:输入 x平方-2x-3小于0
x1=3 x2=-1
输出 -1<x<3
基本算法:INPUT x平方-2x-3小于0
x^2-2x-3<0
(x-1)^2<4
PRINT -1<x<3
‘柒’ 一个算法题
python">#py3
deffun(lis,n):
foriinlis:#循环从lis中取出i
if(n-i)inlis://如果n-i在lis中,即找到了两个和街于n的数
returni,n-i//返回
li=[1,2,3,4,5,6,8,9]
print(fun(li,7))