自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 动态规划解决硬币问题

给你一些面值为{1,3,5}的硬币,用它凑够价值为N的一个数,找出用硬币数量最少的方法。硬币:int coins[] = {1,3,5} 需要找的钱:n 需要的数量:solu[] 路径:dp[]#include "stdafx.h"#include<iostream>#include<vector>void solution(int* coins, int value, int* solu

2016-08-22 15:00:49 527

原创 C语言 O(1)的时间删除链表节点

思路: 由于删除单链表的节点需要知道的是此节点的前一个节点,所以将此节点与其后的节点交换,再删除后一个节点,便可达到删除此节点的目的。struct node//节点类型{ int val; node* next;};node* p;//给出的节点p->val = p->next->val;node* tmp = p->next;p->next = tmp->ne

2016-05-10 21:14:23 314

原创 C语言 整数的整数次方(不考虑大数问题)

#include<stdio.h>int doublepow(int n, int m){ int i = 1; int sum = n; for(i = 1; i< m; i++) { sum = sum * n; } return sum;}int main(){ int n; int m; scan

2016-05-10 21:08:50 1019

原创 C语言 二进制中1的个数

思路: 每个二进制的数字%2可以判断出它的最低一位是不是1,所以给这个数字每次%2,然后右移一位,直到这个数字等于0,即可判断出每一位是不是1。#include<stdio.h>int num1(int n){ int num = 0; while(n>0) { if(n%2 == 1) { num++;

2016-05-10 21:07:47 520

原创 C语言 打印1到最大的N位数(输入3,打印1,2,3~999)

#include<stdio.h>int print(int n){ int sum = 10; int i = 0; for(i = 1; i<n; i++) { sum*=10; } for(i = 1; i<sum; i++) { printf("%d ",i); } printf("\

2016-05-10 21:05:06 482

原创 C语言 调整一个数组的顺序,使得奇数在总在偶数的前边

思路: 类似快速排序中的POTITION函数,用两个指针,一个指针P1依次向后遍历判断是不是奇数,另一个P2保持一个特性,就是P2指针前的数字都是P1判断过的奇数,后面一直到P1指针的位置都是判断过的偶数,当P1新找到一个奇数时,将P2++后并与P1所指的数字进行交换,直到P1完成循环。#include<stdio.h>void potition(int arr[], int size){

2016-05-10 21:02:01 555

原创 C语言 斐波那契数列

思路: 按照斐波那契数列的通项公式,可以用3个变量,一个保存当前求得的结果,两个保存求得此结果的项,循环可得任意一个项。#include<stdio.h>int fibonacci(int n){ int f1 = 0; int f2 = 1; int f = 0; if(n == 0) return 0; if(n == 1)

2016-05-10 20:56:03 676 1

原创 C语言 旋转数组的最小数字

思路: 类似二分查找,每次取中间的在数字,以此为分隔,判断两边的数组哪个是有序的,分析题意可知最小的数字定在无序的一端,在此端的数组内继续查找。#include<stdio.h>int potition(int arr[], int left, int right){ int key = left+right/2; if(arr[key] > arr[right])

2016-05-10 20:52:55 326

原创 C++ 重载=操作符

#include<stdio.h>#include<iostream>#inlcude<stdlib.h>class CString{public: CString() { m_str=NULL; } CString operator =(const CString &n_str) { if(this== &n_str

2016-05-04 16:33:49 291

原创 C++ 判断一个数是否在横向有序,纵向有序二维数组中

从数组右上角开始判断,如果KEY值大于此数,则不在这一行,如果KEY值小于这个数,则不在这一列#include<stdio.h>#include<iostream>int serch(int arr[][4],int key, int ref, int low, int *releft, int *reup){ int tem; int left = ref - 1;

2016-05-04 16:16:42 661

原创 C++ 给出一个链表的头结点,倒序打印链表

递归调用,先递归,再打印#include<iostream>#include<stdio.h>using namespace std;class list_node{public: int val; list_node* next;};void reshow(list_node* head){ if(head->next != NULL) {

2016-05-04 16:14:17 365

原创 C++ 设计一个类,只能生成一个对象

#include<iostream>using namespace std;class singleton{public: static singleton* getpsin() { if(psin == NULL) { psin = new singleton(); } return ps

2016-05-04 16:12:22 1918

原创 C++ 将“we are happy”中的空格替换成%20,即“we%20are%20happy”

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char c[100] = "we are happy"; int space_num = 2; int pos = strlen(c); int new_pos = pos + (2 * space_num); while

2016-05-04 16:11:04 384

原创 C++ 用两个栈实现一个队列

#include<iostream>using namespace std;class stack;class stack_node{ friend class stack;public: stack_node(int val, stack_node *p):value(val),next(p) {} ~stack_node() {}private

2016-05-04 16:09:04 221

原创 C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树

#include<iostream>#include<queue>#include<stack>using namespace std;template <class Type>class BinTreeNode;template <class Type>class BinTree;template <class Type>class BinTreeNode{ friend c

2016-05-04 16:06:40 512

原创 C 位段的内存分配

什么是位段?strucr code{ int c1 :7; int c2 :6; int c3 :19;} 这就是位段了。跟结构体很类似,不过他在每个成员的定义的后面多加了一个 : 跟一个数字,这个数字用来限定这个成员所占内存的bit位。这就是说,c1占了占7位,c2占了6位,c3占了19位,加在一起32位,才一个字节。这样,本来要占3个字节的结构体,现在一个字节就

2015-04-22 17:53:15 848

原创 C 最大子序列问题

问题描述:  给定一个数组,求出从某个数字开始,依次向后加N个数,这些数之和为整个数组中最大的                     例:{-1,2,3,-3,5,-2}     求得结果为  2 加到 5。 思路:     从第一个数字开始,依次向后加,当和为负数时,剪掉前面的所有数字。(前面这些的和都是负的了,加到后面只会使值变小- -)当和为正数并大于以前的所得的和时,记录此时

2015-04-10 22:27:08 398

原创 C 单链表的顺序插入

思路: 向单链表中插入一个新值,需要插入位置前后的两个节点。            从根节点开始遍历,寻找插入的正确位置。struct node { int v; struct node *p; };int fun (struct node **rootp,int val){ struct node *current; struct node *previous; str

2015-04-09 12:50:54 584

原创 C 反转字符串 "abcd" --> "dcba"

#includevoid test(char *p){ static char *ep = p; char aa = *p; if(*p != '\0') test(p+1); else return; *ep = aa; ep++;}int main(){ char a[] = "abcd"; test(a); printf("%s\n",a);

2015-04-08 18:11:11 919

原创 C 反转字符串中的单词 "student a am i " --> "i am a student "

#includevoid cpy(char *s, char **o){ while(**o!= '\0' && **o != ' ') { *s = **o; (*o)++; s++; } *s = '\0'; return;}void cpy2(char **s,char *o){ if(**s == '\0') { **s = ' '; (*s

2015-04-08 18:08:34 491

原创 C 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。

int at(char *p){ int sum=0; while(*p != '\0') {  if( (*p) '9')   return 0;  sum = sum * 10 + (*p -'0');  p++; }  return sum;}

2015-03-23 11:28:27 448

原创 C 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

double att(char *p){ int sum = 0; int i = 0; int a = 1; double q; if(*p == '-') {  a = -1;  p++; } while(*p != '.') {  sum = sum * 10 + (int)(*p - '0');  p++; } p++;

2015-03-23 11:27:10 429

原创 C 将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

int aoi(char *p){ int sum = 0; int a = 1; if(*p == '-') {  a = -1;  p++; } while ( *p != '\0') {  sum = sum * 10 + (*p - '0');  p++; } sum = sum * a; return sum;}

2015-03-23 11:25:58 875

原创 C 不使用额外变量统计字符串长度(递归)

#includeint my_strlen(char *);int main(){ char str[] = "abcefgh"; int i; i = my_strlen(str);  printf("%d\n",i); return 0;}int my_strlen(char *p){ if ( *p == '\0' ) {  ret

2015-03-20 13:03:40 290

原创 C 从字符串中提出子字符串

void ( char[] dst, char[] stc, int start, int len) /传入字符串,子字符串,开始位置,需要复制的长度/{ int j=0; for( ; j

2015-03-11 20:20:48 463

原创 C 二分查找

void fid( a[] , i ) //传入一个数组与其长度 { int left=0,right=i;while(right-left>1) { if( mid < a[((left+right)/2)] ) right = ((left+right)/2); if ( mid > a[((left+right)/2)] )

2015-03-11 20:15:13 367

原创 C 不引入第三变量交换两个数的值(异或运算符^)

include

2015-03-09 20:07:32 507

原创 C 将一个10进制数2进制编码中的1的个数输出(按位于运算符&)

include

2015-03-09 20:07:03 288

原创 C 将一个10进制数2进制编码中的1的个数输出(利用数组)

include

2015-03-09 20:04:44 359

原创 C 从标准输入读取源代码并在每一行前加上行标

#includeint main(){ int ch; int i=1; printf(" 0:\t"); while( ch=getchar() ) {  if( ch=='\n')   break; } while( ch=getchar() ) {  if( ch=='\n')  {   printf(" %d:\t",i); 

2015-03-06 17:40:07 612

原创 C 从标准输入读取C源代码,并验证所有的花括号都正确的成对出现

#include int main(){ int ch; int i=0; while( ch=getchar() ) {  if( ch == '{' )   i++;  if( i>=1 )  {   if( ch == '}' )    i--;  }  if( ch == 'N' )   break; }  if( i

2015-03-06 13:19:36 523

空空如也

空空如也

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

TA关注的人

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