随笔分类 -  编程练习---相关

1 2 下一页

写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷
摘要:题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十进制的加法的,比如是如何得出5+17=22这个结果的。实际上,我们可以分成三步的:第一步只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结果是1);第二步做进位,5+7中有进位,进 阅读全文

posted @ 2011-09-19 15:33 原来... 阅读(717) 评论(1) 推荐(0) 编辑

求子数组的最大和
摘要:题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。分析:本题最初为2005年浙江大学计算机系的考研题的最后一道程序设计题,在2006年里包括google在内的很多知名公司都把本题当作面试题。由于本题在网络中广为流传,本题也顺利成为2006年程序员面试题中经典中的经典。如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾 阅读全文

posted @ 2011-09-19 11:27 原来... 阅读(407) 评论(0) 推荐(0) 编辑

栽了两次的题--不要忘记
摘要:#include<iostream>using namespace std;struct A{char c;short s;char cc;long l;}*pAbc;int main(){pAbc=(struct A *)0x100000;printf("%x\n",pAbc+0x100);printf("%x\n",(unsigned long)pAbc+0x100);printf("%x\n",(char *)pAbc+0x100);printf("%x\n",(unsigned long *)p 阅读全文

posted @ 2011-09-15 15:20 原来... 阅读(2100) 评论(0) 推荐(1) 编辑

一个漂浮的FUCK
只有注册用户登录后才能阅读该文。

posted @ 2011-09-11 23:08 原来... 阅读(25) 评论(0) 推荐(0) 编辑

正则表达式 提取符合要求的字符
摘要:在分析某个C++源文件的过程中,有这样一行变量定义式: int t_from=20,t_to=12,t_length=120,i_count,t_usetime; 现在你并不知道这行一共定义了多少个变量,以及哪些变量进行了初始值设定,要求从该语句中解析出所有以“t_”开头的变量名,并且如果该变量赋予了初始值的话也需要提取出来,请构造一个方法来实现该要求。#include<iostream>#include<string>#include"boost/regex.hpp"using namespace std;using namespace boost 阅读全文

posted @ 2011-09-11 09:30 原来... 阅读(841) 评论(0) 推荐(0) 编辑

求符合指定规则的数 d(n) = n + n的各位之和
摘要:求符合指定规则的数给定函数d(n) = n + n的各位之和,n为正整数,如 d(78) = 78+7+8=93。 这样这个函数可以看成一个生成器,如93可以看成由78生成。 定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。 输出: 1 3 … #include<iostream>using namespace std;int d(int i){int j=i;int sum=0;while(i!=0){sum+=i%10;i/=10;}sum=sum+j;//cout<<"sum 阅读全文

posted @ 2011-09-09 11:23 原来... 阅读(492) 评论(0) 推荐(0) 编辑

两个已排序的整型数组,求交集,最快算法
摘要:运用归并排序的思想,实现这个求交集!#include<iostream>using namespace std;void merge(int a[],int b[],int n,int m){int i=0,j=0;while(i<n&&j<m){if(a[i]==b[j]){cout<<"两个数组中重复的数字其中一个是:"<<a[i]<<endl;i++;j++;}else if(a[i]>b[j]){j++;}else i++;}}int main(){cout<<" 阅读全文

posted @ 2011-09-09 10:12 原来... 阅读(3952) 评论(2) 推荐(1) 编辑

A、B、C、D、E五名学生有可能参加计算机竞赛
摘要:A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些 人参加了竞赛: (1)A参加时,B也参加; (2)B和C只有一个人参加; (3)C和D或者都参加,或者都不参加; (4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。#include<iostream>using namespace std; int main(){ int a,b,c,d,e; for (a=0; a<2; a++) for(b=0; b<2; b++) for(c=0; c<2; c++) for(d=0; d<2; d++) for(e=0; e& 阅读全文

posted @ 2011-09-01 22:05 原来... 阅读(3326) 评论(0) 推荐(0) 编辑

数组排序后保证正数之间和负数之间的相对位置不变 负数在前 正数在后
摘要:假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数之间和正数之间元素相对位置不变。时空复杂度要求分别为:o(n),o(1)例如 -3 4 2 -1 7 3 -5 排序后 -3 -1 -5 4 2 7 3我的想法:#include<iostream>using namespace std;void arraydivsort(int a[],int n){int temp=0;int k=0;int flag=0;for(int i=0;i<n;){if(0==flag && a[i]<0) k=i;if(k-1& 阅读全文

posted @ 2011-08-31 21:08 原来... 阅读(2317) 评论(3) 推荐(0) 编辑

不开辟用于交换数据的临时空间,如何完成字符串的逆序
摘要://不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)#include "stdafx.h"void change(char *str) { for(int i=0,j=strlen(str)-1; i<j; i++, j--){ str[i] ^= str[j] ^= str[i] ^= str[j];//等价于str[i] ^= str[j];str[j] ^= str[i];str[i] ^= str[j];str[i] += str[j];str[j] = str[i]-str[j];str[i] = str[i]-st 阅读全文

posted @ 2011-08-30 17:22 原来... 阅读(1559) 评论(0) 推荐(1) 编辑

删除串中指定的字符
摘要:#include<iostream>using namespace std;int main(){int i,j,k;char s[]="asdfgd";cout<<"输入一个你想删除的字符:"<<endl;char c;cin>>c;k=0;for(i=0;s[i];i++){if(s[i]!=c){s[k++]=s[i];}}s[k]='\0';cout<<s<<endl;} 阅读全文

posted @ 2011-08-30 16:36 原来... 阅读(444) 评论(0) 推荐(0) 编辑

实现N*N矩阵的乘法,矩阵有一维数组表示
摘要:下面是一个实现3*3维数组的乘法!#include<iostream>#include<vector>using namespace std;int k=0;vector<int> c;void array(int a[],int n,int b[]){for(int i=0;i<n*n;){for(int j=0;j<n;j++){k=a[i]*b[j]+a[i+1]*b[j+3]+a[i+2]*b[j+6];c.push_back(k);} i=i+n;}for(int m=0;m<n*n;m++)cout<<c[m]< 阅读全文

posted @ 2011-08-30 08:49 原来... 阅读(750) 评论(0) 推荐(0) 编辑

变态的指针用法
摘要:#include <windows.h>#include <iostream>using std::cout; using std::endl;int main(){char *str[]={"Welcome","to","Fortemedia","Nanjing"};char **p=str+1;//p指向str[1]str[0]=(*p++)+2; //p指向str[2] str[0]="\0"str[1]=*(p+1); //str[1]="Nanjing 阅读全文

posted @ 2011-08-22 08:49 原来... 阅读(538) 评论(0) 推荐(0) 编辑

sony面试题(输出* .这样的字符)
摘要:输出如图所示的图像的程序如下:(这是一道sony的面试题)#include<iostream>using namespace std;void dian(int n){while(n--){cout<<".";}}void xing(){cout<<"*";}int main(){cout<<"输入你需要输出的行数:"<<endl;int line;cin>>line;for(int i=1;i<=line;i++){int j=i;while(j--){x 阅读全文

posted @ 2011-08-17 18:44 原来... 阅读(384) 评论(0) 推荐(0) 编辑

寻找鞍点
摘要:题目:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。#include<iostream>using namespace std;void find_andian(int n,int m,int (*a)[4]){//int *p=a[0];int fl=0;int fh=0;int con=0;for(int i=0;i<n;i++){int max=a[i][0]; int min=a[i][0];for(int j=0;j<m;j++){if(a[i][j]>max){max=a[i][j];fl=j;fh=i;}}mi 阅读全文

posted @ 2011-08-14 15:58 原来... 阅读(453) 评论(0) 推荐(0) 编辑

指定位置 指定位数的转换
摘要:unsigned int intvert(unsigned int x,int p,int n)实现对 x 的进行转换,p 为起始转 化位,n 为需要转换的长度,假设起始点在右边.如 x= 0b0001 0001,p=4,n=3 转换后 x=0b0110 0001 #include<iostream>#include<assert.h>using namespace std;unsigned int intvert(unsigned int x,int p,int n) //假定 p=4,n=3 { unsigned int t=0;unsigned int a=1; 阅读全文

posted @ 2011-08-07 10:38 原来... 阅读(191) 评论(0) 推荐(0) 编辑

O(N)的时间复杂度找出a[N]中那个重复的数字
摘要:数组 a[N],存放了 1 至 N-1 个数,其中某个数重复一次。写一个函数,找出被重复的数 字 .时间复杂度必须为 o(N)函数原型:方法一:#include<iostream>using namespace std;int main(){int a[]={1,2,3,4,5,6,8,7,8};int n=sizeof(a)/sizeof(int);int j=n-1;for(int i=0;i<n&&j>i;){if(a[i]!=a[j]){j--;if(j==i+1){i+=1;j=n-1;}}if(a[i]==a[j]){cout<< 阅读全文

posted @ 2011-08-07 10:01 原来... 阅读(531) 评论(0) 推荐(0) 编辑

在某个范围内寻找最大的f(n)=n 其中f(n)为计算小于等于n的数值中含有“1”的总和
摘要:#include<iostream>using namespace std;pair<int,int> mypair;int count_1(int n) //统计一个数值中含有“1”的个数{int sum=0;while(n!=0){if(n%10==1){sum++;}n/=10;}return sum;}int f(int n) //<=n内的所有数值含有“1”的个数的总和{int sum=0;while(n){sum+=count_1(n);n--;}return sum;}int main(){int maxcount=0;int count=0;int 阅读全文

posted @ 2011-08-03 21:32 原来... 阅读(526) 评论(0) 推荐(0) 编辑

求一个字符串中连续出现次数最多的子串
摘要:vector向量中的插入值如上图所示:#include <iostream>#include <vector>#include<string>using namespace std;pair<int ,string> fun(const string &str){vector<string> substrs;int maxcount=1,count=1;string substr;int i,len=str.length();for(i=0;i<len;i++){substrs.push_back(str.substr( 阅读全文

posted @ 2011-08-03 19:42 原来... 阅读(3884) 评论(0) 推荐(1) 编辑

约瑟夫问题
摘要:#include<iostream>using namespace std;typedef struct student{ int data; struct student *next;}node;void JOSEPHUS(int k,int m) //创建单链表{ node *head,*p,*s; int x,cycle=1; head=(node *)malloc(sizeof(node)); p=head; int n=0; while(cycle) { cout<<"请输入一直不为0的数,输入0则结束"<<endl; cin& 阅读全文

posted @ 2011-08-03 14:29 原来... 阅读(334) 评论(0) 推荐(0) 编辑

1 2 下一页

导航