天王盖地虎

1,求有序数列中某个元素的个数

思想:二分找上下界:

int element_count(int * set, int len, int e)
{int f, a, b, t;for(a = 0, b = len - 1; a < b; set[t = a + b >> 1] <  e ? (a = t + 1) : (b = t - 1));for(f = a, b = len - 1; a < b; set[t = a + b >> 1] <= e ? (a = t + 1) : (b = t - 1));return b - f;
}

另一种实现:

int element_count(int * set, int len, int e)
{int t;if(set[0] == e && set[len - 1] == e) return len;if(set[0] > e || set[len - 1] < e) return 0;t = len / 2;return element_count(set, t, e) + element_count(set + t, len - t, e);
}

 

其他方法:

int element_count(int * set, int len, int e)
{int min=0,max=len-1,mid,count=0,k;while(min < max){mid=(min+max)/2;if(set[mid]==e){count = 1;for(k = mid ; k >= 0 && set[k]==e ; k --);count += (mid-k-1);for(k = mid ; k < len && set[k]==e ; k ++);count += (k-mid-1);   break;}else if(set[mid]>e)max=mid-1;else min = mid+1;}return count;
}

 

2,素数:

#include<stdio.h>
#include<math.h>int s(int k)
{int i;int flag = 1;for(i=2;i< sqrt(k) && flag; i++){if(0 == k%i)flag = 0;}if(flag)return 1;return 0;
}void main()
{int i,n;printf("please input a number here:\n");scanf("%d",&n);if(n >=2)printf("%d\n",2);for(i=3;i<=n; i+=2){if(s(i))printf("%d\n",i);}
}

 

判断函数也可以这样写:

int s(int k)
{int i;for(i=2; i<= sqrt(k) && k%i; i++);if(i > sqrt(k))return 1;return 0;
}

 还可以写成:

int s(int k)
{int i;if(k < 2)return 0;if(k == 2)return 1;for(i = 3; i*i < k; i+=2)if(k%i == 0)return 0;return 1;        }

 

 还可以这样:

int s(int k)
{int i;if(k < 2)return 0;if(k == 2)return 1;for(i = 3; i*i<k && k%i; i+=2);if(i*i >= k)return 1;return 0;        }

 

3,删除一个字符串中存在另一个字符串中的字符:

#include <stdio.h>
#include <string.h>squeeze(char* s1, const char* s2)
{int i = 0,j = 0,k = 0;int flag = 0;char tm[100] = {0};int len1 = strlen(s1);int len2 = strlen(s2);for(i=0; i<len1; i++){   flag = 1;for(j=0; j<len2 && flag; j++){if(s1[i]==s2[j]){flag = 0;}}if(flag)tm[k ++] = s1[i];}strcpy(s1,tm);}
int main()
{char a[100] = {0},b[100] = {0};printf("请输入s1:");scanf("%s",a);printf("请输入s2:");scanf("%s",b);squeeze(a,b);printf("删除后:%s\n",a);return 0;
}

一次循环实现:

squeeze(char* s1, const char* s2)
{int i = 0,k = 0;int flag = 1;int len1 = strlen(s1);int len2 = strlen(s2);char tm[100] = {0};char sample[128] = {0};for(i = 0 ;i < len2 ; i ++)sample[s2[i]] = 1;    for(i = 0 ;i < len1 ;i ++){flag = 1;if(sample[s1[i]])flag = 0;if(flag)tm[k ++] = s1[i];}tm[k] = 0;strcpy(s1,tm);}

 

4,字符转换:

#include<stdio.h>
#include<string.h>void main()
{char c[20];int i=0,len;printf("请输入字符串C:");scanf("%s",c);len  = strlen(c);for(;i<len&&(c[i]|=32);i++);puts(c);}

或者:

#include<stdio.h>
#include<string.h>void main()
{char c[20];int i=0;printf("请输入字符串C:");scanf("%s",c);for(;c[i]&&(c[i]|=32);i++);puts(c);}

 

5,小问题

#include  <stdio.h>
#include "string.h" int main()
{char *str=NULL;int *p=NULL;
//    int a;
//    printf("%p  ",&a);   测试当前程序变量可用的地址str=(char*)0xFA65;printf("%p   ", str); //  p=(int*)str;p=(int*)0x0012FF3C;printf("%p   ", p); memcpy(p, "123", 3);
//    *p = 12;printf("%d\n", *p); return 0;
}

 

6,数字根是指对一个整数,把它的各位数字相加,若其和为一位数,则此和即为其根,若不是一位数字,则把它的各位数字继续相加,直到其和为一个正整数为止。例如对于正整数24,因为2+,和为1位数,所以6即为其根。对于39,因为3+12,和不为个位数,继续相加,,3为个位数,则为数字的根。要求输入若干个正整数,以0为结束,输出每个正整数的根。

unsigned foo( unsigned n )
{while( n > 9 )n = n%10 + n/10;return n;
}

 

7,

转载于:https://www.cnblogs.com/lfsblack/p/3245900.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ruby array_Ruby中带有示例的Array.cycle()方法

ruby arrayArray.cycle()方法 (Array.cycle() Method) In this article, we will study about Array.cycle() method. You must be a little more excited to read about Array.cycle method due to its catchy name as I was pretty amazed after reading this method. In the…

十八、对已经找到轮廓的图像进行测量

图像轮廓的获取可参考博文十七 一、相关原理 1&#xff0c;弧长和面积 对于弧长和面积&#xff0c;计算出来的轮廓单位都是像素 2&#xff0c;多边形拟合 每一个轮廓都是一系列的点&#xff0c;然后通过多边形进行拟合&#xff0c;无限的接近真实形状 相关API&#xff1a;…

Linux 终端登录SSH:解决SSH的Access Denied 和 make xconfig的使用

对于SSH&#xff1a; 可以不是用putty&#xff0c;尤其是putty出现 Access denied 的时候&#xff0c;请换用konsole 或者其他终端 &#xff08;如 terminal&#xff09;在command line中&#xff1a; # ssh 要访问的主机ip eg &#xff1a; ssh 192.168.111 然后确定…

LeetCode 513. 找树左下角的值 思考分析

题目 给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 递归解 左下角要满足两个条件&#xff1a; 1、深度最大的叶子结点 2、最左结点&#xff1a;使用前序遍历&#xff0c;优先左边搜索。 1、确定递归函数的参数和返回值 参数&#xff1a;树的根结点&#xff…

利用MyBatis的动态SQL特性抽象统一SQL查询接口

1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射的方法构造多查询参数.在遇到多属性参数(例如order by,其参数包括列名,升序降序类型,以及可以多个列及…

ctype函数_PHP Ctype(字符类型)函数

ctype函数Ctype功能 (Ctype functions) PHP provides some of the built-in functions, which are used to verify the characters in the string i.e. to check whether a string contains the characters of specific types. PHP提供了一些内置函数&#xff0c;这些函数用于验…

Linux 平台下 MySQL 5.5 安装 说明 与 示例

一.下载说明前期的一些准备说明&#xff0c;参考&#xff1a;MySQL 发展史http://blog.csdn.net/tianlesoftware/article/details/6999245Mysql 不同版本 说明http://blog.csdn.net/tianlesoftware/article/details/6723117 MySQL 分为Community Server 和 Enterprise Edition。…

开始python之旅

接触python缘于工作所需&#xff0c;曾经接触过C、C等语言&#xff0c;对于编程语言在学习上大体是一个套路&#xff0c;当然套路因人而异&#xff0c;适合就好。接下来&#xff0c;我将不断分享python的知识和学习技巧&#xff0c;共同学习。 起源 初识一门语言善于先了解语言…

LeetCode 112. 路径总和 、113. 路径总和 II 思考分析

目录112. 路径总和题目递归解递归解&#xff0c;其他人的解法迭代解&#xff0c;其他人的解法113. 路径总和 II题目递归解递归解&#xff0c;参考别人的思路112. 路径总和 题目 给定一个二叉树和一个目标和&#xff0c;判断该树中是否存在根节点到叶子节点的路径&#xff0c;…

kotlin 查找id_Kotlin程序查找矩阵的转置

kotlin 查找idA transpose of a matrix is simply a flipped version of the original matrix. We can transpose a matrix by switching its rows with its columns 矩阵的转置只是原始矩阵的翻转形式。 我们可以通过切换矩阵的行和列来转置矩阵 Given a matrix, we have to…

[mongodb翻译]分片和故障转移

一个配置恰当的mongodb 分片集群不会有单点失效。 本章节描述了集群服务器中可能出现的故障&#xff0c;及相应的对策。 1. 某个mongos路由进程故障 每一个mongos会运行每一台应用服务器上面&#xff0c;该应用服务器只能通过这个mongos进程和集群进行通信。mongos进程不是…

看张子阳的书真是收获很多,也醒悟了很多(一)

摘录&#xff1a; 这是有一次开会时&#xff0c;我的老总跟我们说了这样一个事例&#xff1a;通常来说&#xff0c;医生是很高尚的职业&#xff08;暂不考虑国内医生的负面新闻&#xff09;&#xff0c;尤其是牙科医生&#xff0c; 他们有着体面的工作并且收入不菲。但是&#…

【C++ grammar】抽象、封装与this指针

目录1、Abstraction and Encapsulation&#xff08;抽象与封装&#xff09;1. Data Field Encapsulation (数据域封装)2. Accessor and Mutator (访问器与更改器)2.1. To read/write private data, we need get/set function (为读写私有数据&#xff0c;需要get/set函数)2.2. …

java创建临时文件_用Java创建一个临时文件

java创建临时文件The task is to create a temporary file in Java. 任务是用Java创建一个临时文件。 Creating a temporary file 创建一个临时文件 To create a temporary file in java – we use createTempFile() method of "File" class. The createTempFile()…

十九、图像的形态学操作

一、图像形态学 图像形态学是图像处理学科的一个单独分支学科 主要针对的是灰度图和二值图像 是由数学的集合论以及数学中的拓扑几何原理发展而来 二、膨胀操作&#xff08;dilate&#xff09; 33的卷积核 以33为卷积核从左往右(从上往下)开始运行&#xff0c;若这卷积核…

X名称空间(WPF)

笔记简述 闲话x名称空间简要x名称空间的Attributex名称空间的标签扩展x名称空间的XAML指令元素闲话 本笔记参考与《深入浅出WPF》、MSDN、Some Blog… MSDN的飞机票点这里。 x名称空间简要 在VS中新建个WpfApplication都会自动生成xmlns:x"http://schemas.microsoft.com/w…

基于Bresenham和DDA算法画线段

直线&#xff1a;ykxb 为了将他在显示屏上显示出来&#xff0c;我们需要为相应的点赋值&#xff0c;那么考虑到计算机的乘法执行效率&#xff0c;我们肯定不会选择用Ykxb这个表达式求值&#xff0c;然后进行画线段。 我们应当是将它转化为加法运算。 下面提供两种常见的算法&am…

leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

目录1、106题目2、参考思路&#xff1a;递归切割数组3、105题目4、同样思路的代码1、106题目 2、参考思路&#xff1a;递归切割数组 代码参考&#xff1a;公众号&#xff1a;代码随想录 后序数组中序数组 以 后序数组(左右中)的最后一个元素作为切割点&#xff0c;先切中序数组…

按频率对元素进行排序

Prerequisite: 先决条件&#xff1a; Hashing data structure 散列数据结构 How to write user-defined comparator for priority queue STL in C? 如何在C 中为优先级队列STL编写用户定义的比较器&#xff1f; How to sort a map based on values instead of value? 如何根…

二十、分水岭算法

一、基本原理 分水岭算法主要是基于距离变换&#xff08;distance transform&#xff09;&#xff0c;找到mark一些种子点&#xff0c;从这些种子点出发根据像素梯度变化进行寻找边缘并标记 分水岭&#xff1a;可以简单的理解成一座山&#xff0c;然后来洪水了&#xff0c;水开…