0
点赞
收藏
分享

微信扫一扫

枚举策略题目练习

前行的跋涉者 2022-01-26 阅读 31

枚举策略

说明:对于考研的试题中,有一些需要使用到暴力求解的问题,如枚举和模拟,枚举就是将所有可能的情况全部列出来

判断题目是否可以使用枚举策略

1、分析数据量
一般情况下,1000ms可以进行10^7的运算,一些题目会限制秒数,一般情况下都是1秒,那么通常情况下都是要用时间复杂度为O(n),所以要学会如何进行分析数据量

题目1:

题目1

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
	int a,b,c;
	for(a=0;a<=9;a++){
		for(b=0;b<=9;b++){
			for(c=0;c<=9;c++){
				int abc = a*100 + b*10 + c;
				int bcc = b*100 + c*10 + c;
				int temp = abc + bcc;
				if(temp == 532){
					printf("%d %d %d\n",a,b,c);
				}
			}
		}
	}
	
	
	
	return 0;
}

题目2:

在这里插入图片描述

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
	int a,b,c,d,i;
	for(i=1000;i<10000;i++){
		a = i/1000;
		b = i%1000/100;
		c = i%100/10;
		d = i%10;
		int n = d*1000 + c*100 + b*10 + a;
		if(i*9 == n){
			printf("%d\t",i);
		} 
	}
	
	
	
	return 0;
}

题目3

在这里插入图片描述
这里添加了反序数的判断,其实第二题也可以使用的,只不过当时没有想到

#include <iostream>
#include <cstdio>

using namespace std;

int Reverse(int number) {
	int reverseNumber = 0;
	while(number !=0){
		reverseNumber *=10;
		reverseNumber +=number % 10;
		number /=10;
	}
	return reverseNumber;
}


int main(){
	int i;
	for(i = 0; i<=256 ; i++){
	    if(i*i == Reverse(i*i)){
	    	printf("%d\n",i);
		}
	}
	
	
	return 0;
}
举报

相关推荐

0 条评论