欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一些算法题

程序员文章站 2022-07-15 08:11:48
...

1、将一整数逆序后放入一数组中(要求递归实现)

#include <stdio.h>


void convert(int *result, int n) 
{  
	if(n>=10)   
		convert(result+1, n/10);  
	*result = n%10;  
} 
int main(int argc, char* argv[]) 
{ 
	int n = 123456789;
	int result[20]={}; 
	convert(result, n); 
	for(int i=0; i<9; i++)  
		printf("%d", result[i]);
	getchar();
}


 2.求高于平均分的学生学号及成绩(学号和成绩人工输入)

#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
typedef map<int, int> templatemap;
templatemap studet ;
void find(int &nScore) 
{  
	int number, score; 
	scanf("%d", &number);  
	if(number != 0) 
	{  
		scanf("%d", &score);  
		studet[number]=score;
		nScore +=score;
		find(nScore);   
	}
} 
int main(int argc, char* argv[]) 
{ 
	int nScore = 0;
	find(nScore);
	int nAverage = nScore/(studet.size());
	for(templatemap::iterator itr = studet.begin(); itr!=studet.end();itr++)
	{
		if(nAverage<itr->second)
			cout<<"ID:"<<itr->first<<"  Score:"<<itr->second<<endl;
	}
	getchar();
}

3、递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)

#include <stdio.h>
#include <iostream>

int find(char *str, int n)
{ 
	if(n<=1) 
		return 1; 
	if(str[0]==str[n-1]) 
	{
		return find(str+1, n-2); 
	}
	else 
	{
		return 0; 
	}
} 
int main(int argc, char* argv[])
{ 
	char *str = "abcdedcba"; 
	printf("%s: %s\n", str, find(str, strlen(str)) ? "Yes" : "No"); 
	getchar();
} 


4.分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)

#include <stdio.h>
#include <iostream>

void prim(int m, int n)
{  
	if(m>n) 
	{  
		while(m%n != 0) 
			n++; 
		m /= n;   
		printf("%d*", n); 
		prim(m, n);  
	} 
	else
	{
		printf("%d", m); 
	}
} 
int main(int argc, char* argv[]) 
{ 
	int n = 100;  
	printf("%d=", n);
	prim(n, 2); 
	getchar();
} 


 


 

转载于:https://www.cnblogs.com/byfei/archive/2012/10/17/3112189.html