<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xc889078的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xc889078</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xc889078]]></copyright><item><title><![CDATA[电话号码对应英语单词]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/12062813</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/12062813</guid><author>xc889078</author><pubDate>Thu, 26 Sep 2013 17:44:18 +0800</pubDate><description><![CDATA[#include 
#include 

char *p[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};//把所有字符串列出来
int total[10] = {0,0,3,3,3,3,3,4,3,4};//每个数字对应的字符串的位数

int main()
{
	char buff[20];
	int i;
	wh]]></description><category></category></item><item><title><![CDATA[求随机数构成的数组中找到长度大于=3的最长的等差数列]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/11473279</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/11473279</guid><author>xc889078</author><pubDate>Mon, 09 Sep 2013 11:32:29 +0800</pubDate><description><![CDATA[参考：http://blog.youkuaiyun.com/zhanxinhang/article/details/6667868


题：求随机数构成的数组中找到长度大于=3的最长的等差数列




输出等差数列由小到大: 



如果没有符合条件的就输出[0,0]



格式：



输入[1,3,0,5,-1,6]



输出[-1,1,3,5]

]]></description><category></category></item><item><title><![CDATA[C语言字符串库函数的实现]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/11396219</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/11396219</guid><author>xc889078</author><pubDate>Sun, 08 Sep 2013 21:33:39 +0800</pubDate><description><![CDATA[转载地址：http://www.cnblogs.com/luxiaoxun/archive/2012/09/04/2670202.html



C语言字符串库函数的实现也是笔试题常考的题目，以下代码没有严格测试，只是简单的实现：
//字符串长度
int strlen(const char *str)   
{   
    assert(str != NULL);   
    int]]></description><category></category></item><item><title><![CDATA[深入理解C++的动态绑定和静态绑定]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/11394771</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/11394771</guid><author>xc889078</author><pubDate>Sun, 08 Sep 2013 20:12:45 +0800</pubDate><description><![CDATA[转载地址：http://blog.youkuaiyun.com/chgaowei/article/details/6427731



为了支持c++的多态性，才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性，以及在编程的过程中避免犯错误。
需要理解四个名词：
1、对象的静态类型：对象在声明时采用的类型。是在编译期确定的。
2、对象的动态类型：目前所指对象的类型。是在运行期决定的。]]></description><category></category></item><item><title><![CDATA[已知一个字符串，比如asderwsde,寻找其中的一个子字符串比如sde 的个数，如果没有返回0，有的话返回子字符串的个数。]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/11376563</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/11376563</guid><author>xc889078</author><pubDate>Sun, 08 Sep 2013 13:37:51 +0800</pubDate><description><![CDATA[已知一个字符串，比如asderwsde,寻找其中的一个子字符串比如sde 的个数，如果没有返回0，有的话返回子字符串的个数。
KMP算法即可解决。
#include 
#include 

int next[15];

void makenext(char *b, int n)
{
	int i = 0;
	next[i] = -1;
	int j = -1;
	while(i<n)
	{
	]]></description><category></category></item><item><title><![CDATA[石子合并]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/11115355</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/11115355</guid><author>xc889078</author><pubDate>Thu, 05 Sep 2013 11:36:55 +0800</pubDate><description><![CDATA[在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆，并将新的一堆石子数记为该次合并的得分。试设计一个算法，计算出将n堆石子合并成一堆的最小得分和最大得分。
#include 

#define N 100
#define INF 65536 
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:]]></description><category></category></item><item><title><![CDATA[对称字符串的最大长度 — 曼彻斯特算法]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10858041</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10858041</guid><author>xc889078</author><pubDate>Sun, 01 Sep 2013 21:56:42 +0800</pubDate><description><![CDATA[题目：输入一个字符串，输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”，由于该字符串里最长的对称子字符串是“goog”，因此输出4。
以下分析参考：http://blog.youkuaiyun.com/hackbuteer1/article/details/6686263
回文串定义：“回文串”是一个正读和反读都一样的字符串，比如“level”或者“noon”等等就是回文串。
回文]]></description><category></category></item><item><title><![CDATA[Catalan数计算及应用]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10807389</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10807389</guid><author>xc889078</author><pubDate>Sat, 31 Aug 2013 22:43:33 +0800</pubDate><description><![CDATA[转载地址：http://blog.youkuaiyun.com/wuzhekai1985/article/details/6764858
 
问题描述：卡塔兰数，是组合数学中一个常出现在各种计数问题中出现的数列。输入一个整数n，计算h(n)。其递归式如下：h(n)=
 h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2，h(0) = h(1) = 1) ]]></description><category></category></item><item><title><![CDATA[已知2条地铁线路，其中A为环线，B为东西向线路，线路都是双向的。任意输入两个站点名称，输出乘坐地铁最少需要经过的车站数量.]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10805167</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10805167</guid><author>xc889078</author><pubDate>Sat, 31 Aug 2013 22:41:35 +0800</pubDate><description><![CDATA[已知2条地铁线路，其中A为环线，B为东西向线路，线路都是双向的。经过的站点名分别如下，两条线交叉的换乘点用T1、T2表示。编写程序，任意输入两个站点名称，输出乘坐地铁最少需要经过的车站数量（含输入的起点和终点，换乘站点只计算一次）。
地铁线A（环线）经过车站：A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18]]></description><category></category></item><item><title><![CDATA[一个整数数组，长度为n，将其分为m 份，使各份的和相等，求m 的最大值]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10749041</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10749041</guid><author>xc889078</author><pubDate>Sat, 31 Aug 2013 17:06:49 +0800</pubDate><description><![CDATA[一个整数数组，长度为n，将其分为m 份，使各份的和相等，求m 的最大值 比如{3，2，4，3，6} 可以分成{3，2，4，3，6} m=1; {3,6}{2,4,3} m=2 {3,3}{2,4}{6} m=3 所以m 的最大值为3。
#include 

bool function_core(int *a, int n, int m, int groupsum, int *group, i]]></description><category></category></item><item><title><![CDATA[跳台阶问题 — 某阶台阶坏掉]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10744081</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10744081</guid><author>xc889078</author><pubDate>Sat, 31 Aug 2013 16:23:05 +0800</pubDate><description><![CDATA[有n阶台阶，一个人一次只能跳一下或者跳两下，其中某一阶台阶坏掉，不能跳到这个坏台阶，问一共有多少种跳法。
#include 

int function(int n, int k)
{
	if(k > n)
		return 0;
	if(n==1)
		return 1;
	if(n==2)
		return 2;
	int f1 = 1;
	int f2 = 2;
	int f;
	for(]]></description><category></category></item><item><title><![CDATA[一串首尾相连的珠子(m 个)，有N 种颜色(N<=10)， 设计一个算法，取出其中一段，要求包含所有N 中颜色，并使长度最短]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10554309</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10554309</guid><author>xc889078</author><pubDate>Thu, 29 Aug 2013 21:23:14 +0800</pubDate><description><![CDATA[一串首尾相连的珠子(m 个)，有N 种颜色(N
#include 
#include 

#define N 256

int allin(char *b, int *c)
{
	for(unsigned int i=0; i < strlen(b); i++)
	{
		if(c[b[i]] == 0)
			return 0;
	}
	return 1;
}

void find_short]]></description><category></category></item><item><title><![CDATA[求一个连通图的割点，割点的定义是，如果除去此节点和与其相关的边，图不再连通，描述算法]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10551583</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10551583</guid><author>xc889078</author><pubDate>Thu, 29 Aug 2013 19:35:31 +0800</pubDate><description><![CDATA[参考：http://blog.youkuaiyun.com/cxllyg/article/details/7610265
 
题目：求一个连通图的割点，割点的定义是，如果除去此节点和与其相关的边，图不再连通，描述算法。
分析：
1. 最简单也是最直接的算法是，删除一个点然后判断连通性，如果删除此点，图不再连通，则此点是割点，反之不是割点（图的连通性一般通过深搜来判定，是否能一次搜索完 全部顶点）；
]]></description><category></category></item><item><title><![CDATA[有n 个长为m+1 的字符串，如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配，则两个字符串可以联接，问这n 个字符串最多可以连成一个多长的字符串，如果出现循环，则返回错误]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10499939</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10499939</guid><author>xc889078</author><pubDate>Thu, 29 Aug 2013 11:23:57 +0800</pubDate><description><![CDATA[有n 个长为m+1 的字符串， 如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配，则两个字符串可以联接， 问这n 个
字符串最多可以连成一个多长的字符串，如果出现循环，则返回错误。
思路：利用弗洛伊德算法可求最长路径。
#include 
#include 
using namespace std;

#define INFINITY -100000   //求最长路径时]]></description><category></category></item><item><title><![CDATA[最短路径—弗洛伊德算法]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10418311</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10418311</guid><author>xc889078</author><pubDate>Tue, 27 Aug 2013 22:38:09 +0800</pubDate><description><![CDATA[#include 
#include 
using namespace std;

typedef struct graph
{
	string vertex[10];
	int arc[10][10];
	int num_vertex;
	int num_edge;
}graph;

int get_location(graph g, string s)
{
	int]]></description><category></category></item><item><title><![CDATA[n支队伍比赛，分别编号为0，1，2。。。。n-1，已知它们之间的实力对比关系， 存储在一个二维数组w[n][n]中，w[i][j] 的值代表编号为i，j 的队伍中更强的一支。]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/10414831</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/10414831</guid><author>xc889078</author><pubDate>Tue, 27 Aug 2013 19:31:57 +0800</pubDate><description><![CDATA[n 支队伍比赛，分别编号为0，1，2......n-1，已知它们之间的实力对比关系，存储在一个二维数组w[n][n]中，w[i][j] 的值代表编号为i，j 的队伍中更强的一支，所以w[i][j]=i 或者j，现在给出它们的出场顺序，并存储在数组order[n]中，比如order[n] = {4,3,5,8,1......}，那么第一轮比赛就是4 对3， 5 对8。然胜者晋级，败者淘汰，同一轮淘汰]]></description><category></category></item><item><title><![CDATA[在人人好友里，A和B是好友，B和C是好友，如果A　和C不是好友，那么C是A的二度好友，在一个有１０万人的数据库里，如何在时间０（ｎ）里，找到某个人的十度好友]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/9750321</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/9750321</guid><author>xc889078</author><pubDate>Sun, 04 Aug 2013 21:31:13 +0800</pubDate><description><![CDATA[在人人好友里，A和B是好友，B和C是好友，如果A　和C不是好友，那么C是A的二度好友，在一个有１０万人的数据库里，如何在时间０（ｎ）里，找到某个人的十度好友。
最短路径问题，每个人一个顶点，是好友距离为1否则为无穷大，输出最小距离为10的顶点就好]]></description><category></category></item><item><title><![CDATA[求数组元素的乘积]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/9749543</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/9749543</guid><author>xc889078</author><pubDate>Sun, 04 Aug 2013 20:03:55 +0800</pubDate><description><![CDATA[题目：一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素，即a[0]变为a[1]到a[n-1]的积，a[1]变为a[0]和a[2]到a[n-1]的积，...，a[n-1]为a[0]到a[n-2]的积。
程序要求： 要求具有线性复杂度；不能使用除法运算符。
思路：
对a[i]的值将其分为两部分a[0]*a[1]*a[2]...*a[i-1]和a[i+1]*a[i]]></description><category></category></item><item><title><![CDATA[系统有很多任务，任务之间有依赖，比如B依赖于A，则A执行完后B才能执行]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/9748951</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/9748951</guid><author>xc889078</author><pubDate>Sun, 04 Aug 2013 18:42:50 +0800</pubDate><description><![CDATA[转载地址：http://blog.youkuaiyun.com/fivedoumi/article/details/8013063
 
系统有很多任务，任务之间有依赖，比如B依赖于A，则A执行完后B才能执行
（1）不考虑系统并行性，设计一个函数（Task *Ptask,int Task_num）不考虑并行度，最快的方法完成所有任务。
（2）考虑并行度，怎么设计

        typedef s]]></description><category></category></item><item><title><![CDATA[1分2分5分的硬币，组成1角，共有多少种组合]]></title><link>https://blog.youkuaiyun.com/xc889078/article/details/9748601</link><guid>https://blog.youkuaiyun.com/xc889078/article/details/9748601</guid><author>xc889078</author><pubDate>Sun, 04 Aug 2013 18:20:59 +0800</pubDate><description><![CDATA[第一种情况：只计算组合总数，不需要列出各种组合
设1分个数为x，2分个数为y，5分的硬币个数为z，则1*x+2*y+5*z=10；

5*z=10-x-2*y；即：

当z=0时，x可以取得值为10、8、6、4、2、0 （6种）
当z=5时，x可以取得值为5、3、1 （3种）
当z=10时，x可以取得值为0 （1种）
总的组合数为6+3+1=10种
因此，按照规律，本题目组合总数]]></description><category></category></item></channel></rss>