㈠ 编写一个算法(最好是python),找出已知表列中不同的数字。求步骤,比如第一步是set,numbres set(n)
n = [1,2,3,4,2,32,2,]
butong = list(set(n))
㈡ 求算法,有1000个数字,其中某些数字加起来等于一个5009,想找出是哪些数字
就是个01背包问题。
输入格式是输入W,然后输入W个数字。输出那些加起来等于5009的数字(不过顺序是反的,无伤大雅)
注:复杂度O(N^2),如果有多组解,输出的是”解里最后一个数最靠前“的那个解。例如
1000 3999 2000 3000 9 1010
2000 3000 9和3999 1010都是解,由于9比1010靠前,输出2000 3000 9。
如果没有解,程序返回-1。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
//freopen("5009.in","r",stdin);
int W;
int N=5009;
scanf("%d",&W);
int a[W+1]= {0};
for(int i=1; i<=W; ++i)scanf("%d",a+i);
int **dp = new int*[W+1];
for(int i =0; i<=W; i++)
dp[i] = new int [N+1];
//初始化第一列为0
for(int i =0; i<=W; i++)
dp[i][0] = 0;
for(int i =0; i<=N; i++)
dp[0][i] = 0;
for(int i = 1; i<=W; i++)
{
for(int j = 1; j<=N; j++)
{
if(j<a[i])
{
//当背包的重量小于当前物品的重点时,则沿用上一行的value值
dp[i][j] = dp[i-1][j];
}
else
{
//否则便进行计算,分两种情况,不包含i和包含i, 非一既零原则。
//计算两种情况中较大的值,物品数从少到多进行计算
//因为类似于斐波那契数列,前面会用到后面的值,故采用自底向上的计算方法
//计算公式:F[i][j] = max(F[i-1][j],F[i-1][j-w[i]]+v[i])
dp[i][j] = max(dp[i-1][j],dp[i-1][j - a[i]]+a[i]);
if(dp[i][j]==N)
{
int i1=i,j1=j;
while(dp[i1][j1]>0)
{
if(dp[i1-1][j1]!=dp[i1][j1])
{
printf("%d ",a[i1]);
j1-=a[i1];
}
--i1;
}
return 0;
}
}
}
}
return -1;
}
输入:
6
1000 3999 2000 3000 9 1010
输出:
㈢ 算法问题:无序数组ab,每个数组有一次循环遍历的机会,找出a有b没有的数字
应该没有很好的算法,只能用空间换时间了:
遍历A,B中数据较少的一个,将其元素存入map或者哈希表,然后遍历剩下的一个中的元素,对每个元素都检查是否在map中。
话说循环遍历是什么意思? 就是普通的遍历吧?
题外的话:如果A中所有元素都在B中,且B只比A多一个元素的话还是有简单的算法的:
初始化x=0, 然后x异或A和B中所有元素,结果x就是B比A多的数字了。
㈣ 小学数字找规律 1,5,10,(),11,() 请说明算法
1,5,10,50,11,55
规律:奇数:1+10=11,第二个(10)是第一个(1)的10倍
所以,偶数:5+50=55,第二个(50)是第一个(5)的10倍
㈤ 算法题求解
一道算法题的求解 一、题目 将1-9这9个数字组合成3个三位数,要求第2个三位数是第一个三位数的2倍,第3个三位数是第一个三位数的3倍。找出所有的可能方案。
㈥ 请听清楚三数字数字375怎样运算等于11至二十
算法如下。
其中用到的几个运算符号和方法的解释:
一、!是阶乘符号。
5!=1×2×3×4×5=120;
3!=1×2×3=6;
(7-3)!=4!=1×2×3×4=24
二、[a]表示不大于a的最大整数。
[5×7÷3]=[11.66……]=11;
[√5]=[2.236……]=2
㈦ 算法题。在一个字符串中有字符有数字,如"sa43lkjkhk3455kh3445566"找出最长的数字子串
1. 如果只是在算法层面,对于算法研究的话,这个问题貌似没有什么好的算法,只能遍历,取最大值,正如楼上这位兄弟所说。
2.如果是为了用程序实现
2.1可以使用正则表达式。
2.2将所有不为数字的字符全部替换成空格,然后按照空格分割,得到一个数组。找数组里面长度最长的元素即可。
方法 2.2 虽然有些笨,但是直观.
㈧ 1,2,3,7,11,16,(),29求算法 谢谢
这是找这串数字规律的数学题目。
在括号内的答案应该是:21。
因为2=1+1
7=1+1+2+3
16=1+1+2+3+4+5
29=1+1+2+3+4+5+7
1=1
3=1+2*(3-2)
11=3+2*(7-3)
21=11+2*(16-11)
37=21+2*(29-21)
数学解题方法和技巧。
中小学数学,还包括奥数,在学习方面要求方法适宜,有了好的方法和思路,可能会事半功倍!那有哪些方法可以依据呢?希望大家能惯用这些思维和方法来解题!
形象思维方法是指人们用形象思维来认识、解决问题的方法。它的思维基础是具体形象,并从具体形象展开来的思维过程。
形象思维的主要手段是实物、图形、表格和典型等形象材料。它的认识特点是以个别表现一般,始终保留着对事物的直观性。它的思维过程表现为表象、类比、联想、想象。它的思维品质表现为对直观材料进行积极想象,对表象进行加工、提炼进而提示出本质、规律,或求出对象。它的思维目标是解决实际问题,并且在解决问题当中提高自身的思维能力。
实物演示法
利用身边的实物来演示数学题目的条件和问题,及条件与条件,条件与问题之间的关系,在此基础上进行分析思考、寻求解决问题的方法。
这种方法可以使数学内容形象化,数量关系具体化。比如:数学中的相遇问题。通过实物演示不仅能够解决“同时、相向而行、相遇”等术语,而且为学生指明了思维方向。
二年级数学教材中,“三个小朋友见面握手,每两人握一次,共要握几次手”与“用三张不同的数字卡片摆成两位数,共可以摆成多少个两位数”。像这样的有关排列、组合的知识,在小学教学中,如果实物演示的方法,是很难达到预期的教学目标的。
特别是一些数学概念,如果没有实物演示,小学生就不能真正掌握。长方形的面积、长方体的认识、圆柱的体积等的学习,都依赖于实物演示作思维的基础。
图示法
借助直观图形来确定思考方向,寻找思路,求得解决问题的方法。
图示法直观可靠,便于分析数形关系,不受逻辑推导限制,思路灵活开阔,但图示依赖于人们对表象加工整理的可靠性上,一旦图示与实际情况不相符,易使在此基础上的联想、想象出现谬误或走入误区,最后导致错误的结果。
在课堂教学当中,要多用图示的方法来解决问题。有的题目,图画出来了,结果也就出来的;有的题,图画好了,题意学生也就明白了;有的题,画图则可以帮助分析题意、启迪思路,作为其他解法的辅助手段。
列表法
运用列出表格来分析思考、寻找思路、求解问题的方法叫做列表法。列表法清晰明了,便于分析比较、提示规律,也有利于记忆。
它的局限性在于求解范围小,适用题型狭窄,大多跟寻找规律或显示规律有关。比如,正、反比例的内容,整理数据,乘法口诀,数位顺序等内容的教学大都采用“列表法”。
验证法
你的结果正确吗?不能只等教师的评判,重要的是自己心里要清楚,对自己的学习有一个清楚的评价,这是优秀学生必备的学习品质。
验证法应用范围比较广泛,是需要熟练掌握的一项基本功。应当通过实践训练及其长期体验积累,不断提高自己的验证能力和逐步养成严谨细致的好习惯。
(1)用不同的方法验证。教科书上一再提出:减法用加法检验,加法用减法检验,除法用乘法验算,乘法用除法验算。
(2)代入检验。解方程的结果正确吗?用代入法,看等号两边是否相等。还可以把结果当条件进行逆向推算。
(3)是否符合实际。“千教万教教人求真,千学万学学做真人”陶行知先生的话要落实在教学中。比如,做一套衣服需要4米布,现有布31米,可以做多少套衣服?有学生这样做:31÷4≈8(套)
按照“四舍五入法”保留近似数无疑是正确的,但和实际不符合,做衣服的剩余布料只能舍去。教学中,常识性的东西予以重视。做衣服套数的近似计算要用“去尾法”。
(4)验证的动力在猜想和质疑。牛顿曾说过:“没有大胆的猜想,就做不出伟大的发现。”“猜”也是解决问题的一种重要策略。可以开拓学生的思维、激发“我要学”的愿望。为了避免瞎猜,一定学会验证。验证猜测结果是否正确,是否符合要求。如不符合要求,及时调整猜想,直到解决问题。
㈨ ‘’构造一个算法,找出十个数字中最小的那个数‘’怎么做
定义最小值变量,初始化为第一个数字值。
依次与剩余9个数对比, 如果当前最小值,比这个数小,则赋值该数为最小值。
遍历后, 最小值变量中存储的 就是十个数的最小值了。