自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (3)
  • 收藏
  • 关注

原创 NEFU OJ36 Magic Tree

可以用dp,但有两个dp数组,而且是三维的,原谅我dp知识的匮乏。。以后补上更具体说明#include#includeint maxs(int x, int y){ if (x > y) return x; else return y;}int main(){ int dp[1002][32][2]; int tree[1002]; int mint, st

2016-09-26 10:07:40 334

原创 NEFU OJ35 Grids

没什么算法。知识点:比较两个double的大小,相减之后是否小于固定值,如1e-10直接穷举,执行2500*1000=250万次会超时吗?应该不会,现在的处理器至少每秒执行个一两千万次乘法应该没问题#include#include#includebool flag[50][50];int num;double r;double x, y;const double ex

2016-09-23 14:52:50 285

原创 NEFU OJ 34 Triangle

关键:1.如果点在三角形内,则轮流和三角形中的三个点中选两个点,组成的三角形面积,和等于原来的三角形    2.分析集合中,知道三角形三个点的坐标,求面积 出错:在题目中给的某个case中,可以看到如果在三角形的边上,不算是在其内部的#include int mianji(int x1,int y1,int x2,int y2,int x3,int y3){ int sum =

2016-09-22 11:35:59 387

原创 NEFU OJ33 Fair Number

很基础的题目,主要是字符(A-F和a-f转换为整数)#include char a[251];int getvalue(char a){ if(a >='A' && a<='F') { return (a-55); } else if(a >='a' && a<='f') { return (a-87); } else { return (a-'0');

2016-09-22 10:18:39 423

原创 NEFU OJ30排序

自己写了个快排。。用库中的排序函数sort()应该也可以,但就失去题目的意义了#include int a[10];void quicksort(int beg,int end){ if(beg >=end) return; int key = a[beg]; int i = beg,j=end; while(i<j) { while(a[j] >= key &

2016-09-21 17:17:08 959

原创 NEFU OJ29 苍之涛-求和

就是1到n求和,但为什么会写写呢...因为数据类型不对也AC不了啊64位正整数用什么?unsigned long long#include int main() { unsigned long long n,sum; while( scanf("%llu",&n) != EOF ) { sum = (1+n)*n/2; printf("%llu\n",sum);

2016-09-21 16:53:14 210

原创 NEFU OJ 28月之数

关键是寻找规律,dp[i]表示位数为i+1的月之数用到dp的思想#include int dp[20];int main() { dp[0] = 1; int temp; for(int i = 1;i<20;++i) { temp = (1<<(i-1)); dp[i] = (temp+dp[i-1])*2-temp; } int m,n; while(

2016-09-21 16:36:44 278

原创 NEFU OJ 27 数列异形

直接求1000000000个是超时的。主要是寻找规律,如果觉得麻烦,用代码来输出,规律是:8,1,1,10,0,6,8,4,5,1代码如下#include int a[10]={8,1,1,10,0,6,8,4,5,1}; int main() { unsigned long int n; while( scanf("%d",&n) != EOF ) {

2016-09-21 15:48:27 233

原创 NEFU OJ26 计算阶乘位数

#include #include #includeusing namespace std;int digit(int n){ double d = 0; for(int i =1;i<=n;++i) { d += log10((double)i); } return (int)(d+1);}int main() { int m

2016-09-21 13:39:13 292

原创 NEFU OJ 25 计算高手

没有算法。关键:scanf接收字符串不能带空格。用gets   char*字符串,strcmp才能比较比较#include #include using namespace std;char a[6];char b[81];int main() { char cmpa,cmpb; int result; while(1) { if(gets(a)

2016-09-21 12:51:30 475

原创 NEFU OJ 24 围数

很简单的一道题目,直接代码#include #include using namespace std;#define INT_MAX 0x7fffffff#define INT_MIN 0x80000000int main() { int x,y; int minx,miny; int maxx,maxy; minx = miny = INT_MAX; ma

2016-09-21 11:37:10 241

原创 NEFU OJ23

杨辉三角之前有道一样的题目,西游记之三角。分析就算了,题目比较简单#include #include using namespace std; int a[30][30];void getSanjiao(){ a[0][0] = 1; a[1][0] = a[1][1] = 1; for(int i =2;i<30;++i) { a[i][0] = a[i][i

2016-09-19 15:50:42 284

原创 NEFU OJ21最长上升子序列

仍然用dp,因为最长上升字序列是最优问题,而且保证最优解由最优子解构成数组为a[n],解为dp[n]dp[i]表示以a[i]结尾的最长上升子序列长度i的范围:[0-j),如果a[j] > a[i],则存在上升子序列dp[i] +1,求最长则得d[j]。注意不一定dp[n-1]是最长的,所以还要求d[n]中最大值。#include #include using names

2016-09-19 11:51:59 240

原创 NEFU OJ20

用dp的思想,递归肯定超时#include #include using namespace std; int n,times;int dp[16][16];int main() { int time,n; dp[0][0] = 0; for(int i =0;i<=15;++i){ dp[0][i] = 1; dp[i][0] = 1; } for(

2016-09-19 11:22:43 281

原创 NEFU 19采药

0-1背包+动态规划关键是了解状态方程。用这两个图来推导

2016-09-19 10:20:30 212

原创 NEFU OJ 18滑雪

dp思想:每个最优解都和子最优解有关,数组存储每个步骤的解dfs:遍历方法的改变,输入数据是不规则的,不能按照之前的dp思路访问,而是类似于图的遍历#include #include using namespace std; int a[100][100] = {0};int dp[100][100] = {0};int dx[4] = {-1,0,0,1};int

2016-09-14 10:53:07 344

原创 NEFU OJ17数字三角形

一道简单的动规题目,理解题意既可。dp[i][j] = ((dp[i-1][j]>dp[i-1][j-1])?dp[i-1][j]:dp[i-1][j-1])+ a[i][j] 这里出错了,是a?b:c运算符优先级的问题。#include #include using namespace std; int a[101][101] = {0};int dp[101][101]

2016-09-14 09:18:32 246

原创 NEFU OJ16 Function Run Fun

简单dp问题,求出所有解。如果直接递归会超时#include #include using namespace std; int w[21][21][21];void getValue(){ for(int i =0;i<21;++i) { for(int j =0;j<21;++j) { for(int k =0;k<21;++k) {

2016-09-12 17:32:12 210

原创 NEFU OJ14 蟠桃记

不多说,上代码#include#includeusing namespace std;int a[30];void getTaozi(){ a[0] =1; for(int i=1;i<30;++i) { a[i] = (a[i-1]+1)<<1; }}int main(){ int n; getTaozi(); while(scanf("%d",&n)

2016-09-12 12:06:42 245

原创 NEFU OJ12 西游记之三角形

#include#includeusing namespace std;int a[466];void getSanjiao(){ a[2] = a[1] = a[0] = 1; for(int i =3;i<=30;++i) { int left = (1+i-1)*(i-1)/2; int bleft = left-i+1; int pos = left; a

2016-09-12 11:42:50 314

原创 NEFU OJ11 寻找吕布

超时,待解决..#includeint main(){ int a[5]; while(true) { int maxa,maxb,sum; for(int i =0;i<5;++i) { scanf("%d",&a[i]); if(i ==0) { maxa = a[i]; } else { if(maxa < a[i]

2016-09-08 17:58:31 259

原创 NEFU OJ10 密码

关键:char转ASCII码值来判断#include#include#includeusing namespace std;int main(){ int n; string s; scanf("%d",&n); while(n>0) { cin>>s; bool b1,b2,b3,b4; b1 = b2 =b3 =b4 =false; int len =

2016-09-08 17:20:00 283

原创 NEFU OJ9 喜羊羊

其实就是等差数列求和,关键是注意项数怎么得到#include#includeusing namespace std;int main(){int n,m,k;while(scanf("%d%d%d",&n,&m,&k) != EOF){//项数int num = (m-n)/k+1;//等差数列求和int sum = n*num+((num*

2016-09-08 15:46:09 201

原创 NEFU OJ8 二倍的问题

排序后寻找符合条件的通过代码如下:#include#include#include#includeusing namespace std;int laber[16];int main(){ int n,len,tempa; int result; cin>>n; while(n>0) { len= 0; result =0; w

2016-09-08 14:34:12 268

原创 NEFU OJ7计算整数个数

#include#includeusing namespace std;int a[100];int b[100];int main(){ int n,len,tempa; cin>>n; while(n>0) { memset(b,0,sizeof(b)); cin>>len; for(int i =0;i<len;++i) { cin>>a[i];

2016-09-08 09:37:59 292

原创 NEFU OJ6 通宵教室

首先看看灯的状态分析:     比如第六盏灯,分别有1,2,3,6个人进来,是关的     第九盏灯,分别有1,3,9个人进来,是开的     第12盏灯,分别有1,2,3,4,6,12人进来,是关的    第16盏灯,分别有1,2,4,8,16人进来,是开的    。。。   可以看到,灯序号有奇数个因数是开的   什么是有奇数个因数的?分析一下:比如12,因数都

2016-09-07 17:48:24 268

原创 NEFU OJ5 An interesting problem

题目:                 有n位数d1d2d3...dn,如果将最后一位数dn移到首位,即dnd1d2d3...d(n-1),且 dnd1d2d3...d(n-1) = dn*d1d2d3...dn,则称这个数满足条件。                 输入dn和k,求出尾数为dn的满足条件的第k个数。                 目前只想到大数来做,但超时。暂时没有

2016-09-07 16:50:13 317

原创 NEFU OJ3 K-Matrix

很经典的一道问题,必须求出每个子矩阵的解。有些类似动态规划的思想,a[i][j]表示o-i行,0-j列元素的值,通过它求出每个子矩阵的值。#include#includeusing namespace std;int a[51][51] = {0};int main(){ int n,sum,x,result,flag; while(cin>>n>>sum) { flag

2016-09-06 17:18:06 282

原创 NEFU OJ 2 猜想

关键点:合数:可以分解成任意质数的乘积求出质数表,然后处理输入#include#includeusing namespace std;#define SIZE (1<<24)int sushuVec[1080000] ;bool sushuB[SIZE+1];int totalnum;void getSushuVec(){ totalnum = 0; mem

2016-09-06 15:08:18 204

原创 union和struct的内存分配&&判断正方形&&函数的隐式转换

最近面试,关于内存分配的题居然答错了,复习下。

2014-04-10 15:11:51 540

原创 不用if 、for等判断语句和乘除法求1+2..+n的值 &&不用加减乘除求两个数的和

11#includeusing namespace std;class Temp{public: Temp(){ ++N; SUM += N; } static void Reset(){ N=0;SUM=0;} static int GetSum(){return SUM;}private: static unsigned int N; static unsigne

2014-03-17 13:16:27 825

原创 n个骰子,求所有可能和出现的概率&&约瑟夫环

11#include#include#include#includeusing namespace std;void basegetdicechance(int *totalsum,int current,int sum,int k){ if(current == 0){ ++totalsum[sum-k]; return; } for(int i =1;i<=6;+

2014-03-17 12:07:06 543

原创 找逆序的对数&&和为n的两个数字&&和为n的连续正数序列

11#include#include#includeusing namespace std;int temp[100];int findreversenum(int *numbers,int beg,int end){ if(beg == end){ return 0; } int mid,leftnum,rightnum,num = 0; mid = (beg+end)

2014-03-16 11:37:32 405

原创 从1到n的数中1出现的个数&&寻找丑数

从1到n的数中1出现的个数,最简单的思路就是从1到n求每个数字中1的个数,这样就是速度太慢了。可以寻找规律,假设数为abcde,c在百位上,求百位上的数字的方法:如果c等于0或者大于1,1的个数只与左边有关(即ab),如果c等于1,1的个数和左边右边都有关(即de)。具体见代码:#include#include#includeusing namespace std;int

2014-03-15 14:22:55 458

原创 连续子数组的最大和

很常见的面试题目了,有两种方法:一、观察规律,因为是寻找连续最大和,需要遍历整个数组,用一个变量来记录所有连续和中最大的,用另一个变量来记录遍历过程中最大的。如果遍历过程中最大的变为0了,则说明后面的元素要重新计算最大值了。因为和之前统计的加上不会再增大。二、动态规划法。状态为f(i)表示以数组第i个位置结尾的连续最大和,状态方程为:如果f(i-1)小于等于0,则f(i)取当前位置的值,否

2014-03-14 21:33:00 359

原创 找数组中第k大的数

其实按照上一篇文章的思路,可以根据快排来计算第k大的数。但会修改数组中的数据,所以这里有新的不修改数据的思路:1、用multiset实现自动排序,大小为k,每个数与set中最大的数比较,如果小于则替换。2、可以用最大堆来实现,方法类似上面的。关键是看代码注释在下面。时间复杂度为:#include#include#includeusing namespace std;in

2014-03-14 20:41:49 574

原创 将二叉搜索树转换为双向链表(不创建新的结点)&&数组中出现超过一半的数字

转换的双向链表是从小到大顺序的,而二叉搜索树如果按照中序遍历则肯定是这个序列,所以要在中序遍历的过程中建立双向链表。而因为结点的左右指针都要在遍历中用到,所以创建一个新的遍历plast来记载已经找到的双向链表的最后一个结点,然后将其它结点与其连接。初始值为NULL。创建和遍历二叉树就不用再说明了,关键是链接的过程,详细参照代码。#include#include#includeus

2014-03-10 14:26:27 419

原创 根据树的后序判断是不是二叉搜索树&&二叉树中和为某一值的路径

根据树的后序判断是不是二叉搜索树#include#includeusing namespace std;bool IsSearchBinaryTree(int *numbers,int begin,int end){ if(numbers == NULL || begin>end) return false; if(begin == end) return true; in

2014-03-07 19:19:24 450

原创 顺时针输出矩阵

比如矩阵是:1    2     3    45    6     7    89    10  11  1213  14  15  16则输出顺序为 1 2  3  4 8 12 16 15 14 13 9 5 6 7 11 10。则思路就是一圈一圈的输出,比如上面矩阵中里面的一圈是6 7 11 10。那么在实际编程时,要分情况注意按行和列输出,因为存在内部的"一圈"只是

2014-03-06 21:38:07 654

原创 判断树B是否为树A的子树&&求出树的镜像

判断树B是否为树A的子树。思路很简单,以B的根节点为标准,查找A中节点是否有相同的。如果有相同的,再判断两个子树是否相同。如果不同,则继续查找。#include#include#includeusing namespace std;struct Binarytree{ int value; Binarytree *left; Binarytree *right;};

2014-03-06 16:01:23 515

SST39LF-VF160中文datasheet

SST39LF-VF160中文datasheet SST39LF-VF160中文datasheet SST39LF-VF160中文datasheet SST39LF-VF160中文datasheet

2011-10-18

proteus入门教程

很详细的proteus入门教程,单片机入门的好选择,嵌入式初步了解

2011-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除