招银网络2021提前批软开c++笔试编程

/1、最长公共子串

//比如 abcdef bcdegkkk ---> af gkkk

填空题,【】为题目给出的空


char* lcs(char *str1,char *str2)//寻找子串并返回
{
	int len1,len2;
	int i,j;
	char *shorter,*longer,*substr;
	if(str1 == NULL || str2 ==NULL)return NULL;
 
	len1 = strlen(str1);
	len2 = strlen(str2);
 
	if(len1 < len2)
	{
		shorter = str1;
		longer = str2;
	}
	else 
	{
		shorter = str2;
		longer = str1;
	}
 
	if(strstr(longer,shorter) != NULL) return shorter;//short 完全是long的子串
 
	len1 = strlen(shorter);
	substr = (char*)malloc(len1 + 1);
    //strstr 函数原型 extern char *strstr(char *str1, const char *str2);
    //str1: 被查找目标 string expression to search.
    //str2: 要查找对象 The string expression to find.
    //返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
    //不完全是子串,所以需要对short的字符串进行分割
	for(【int i=len1-1;i>0;--i】)//short子串为公共子串的大小 从大至小计数 总长len1,已确定不是完全子串,所以从len1-1开始判断
	{
		for(【int j=0;j<=len1-i;++j】)//
		{//函数原型为void *memcpy(void *destin, void *source, unsigned n)
            //从源source中拷贝n个字节到目标destin中
			memcpy(substr,&shorter[j],i);//该语句意为 从j位开始,复制i位至substr;在此循环中可理解为 i从大至小,起始点从小到大
            //例:len=6,则i=5,复制从0-4;for循环第二遍则复制 1-5;i=4,复制0-3,1-4,2-5  
			substr[i] ='\0';
            //整个函数的意思为循环遍历长度逐渐减小的子串的所有可能
			if(strstr(longer,substr) != NULL) return substr;
 
		}
	}
 
	return NULL;
 
}

2、

//数列由3和5组成的数,按从小到大排序 

//3,5,33,35,53,333,335,353,355,533,535,553,555,3333

// 对应每个数字序号依次为1,2,3,4,5,6,7,8.9,10,

//编写一个程序,实现输入序号N输出其对应数列中第N 个数

//输入 7 输出 333

//先算出N是所在等比数列第几个,然后计算该值是2的几次方(x),

//该x就是位数 且等比数列区间内数字就是从0~X的一进制排列,根据该一进制位印出3和5即可

填空题,【】为题目的空

#include
#include
#include
using namespace std;
int main()
{
    int k;
    while(cin>>k)
   {
        unsigned long long sum=0,num=1;
        unsigned int len=1;
        for(;;++len)
        {
           【num=pow(2,len);】//2 4 8
            【sum+=num;】//2,6,14  序列的开始
            if(k<=sum) break;
        }
        sum-=num;//假如输入为7,则 14-8=6
        k=k-sum-1;//k=7, k-6-1=0
        cout<<"print:___";
        for(unsigned int i=len;i>=1;--i)
        {           
            if(【((k>>(i-1))&1)==0】)  【cout<<3;】
            else 【cout<<5;   】        
        }
        cout<

 

填空题理解题意真要命~不给编译调试是真的狗

你可能感兴趣的:(招银网络2021提前批软开c++笔试编程)