藍橋杯訓練營5---枚舉算法

枚舉法的結構:枚舉範圍循環+條件判斷語句

  • 開始了,這就是枚舉?
#include<bits/stdc++.h>
using namespace std;

int main(){
	int tot=0;//記錄可能解的個數
	for(int i=0;i<=99;i++){//枚舉年齡範圍 
		if(i-(i%10*10+i/10)==27){//判斷條件
		tot++; 
		}
	} 
	cout<<tot<<endl;
	return 0;
}
  • j*j<=i
#include<bits/stdc++.h>
using namespace std;

int main(){
	int n,m;
	cin>>n>>m;
	if(n>m){
		swap(n,m);
	}
	for(int i=n;i<=m;i++){
		if(i==1){
			continue;
		}
		bool is_prime=true;
		for(int j=2;j*j<=i;j++){
			if(i%j==0){
				is_prime=false;
				break;
			}
		}
		if(is_prime){
			cout<<i<<endl;
		}
	}
	return 0;
}
  • c語言中語句srand( (time(NULL) ) 表示設置一個隨機種子,每次運行都能保證隨機種子不同。
#include<bits/stdc++.h>
using namespace std;

int main(){
	srand(time(NULL));
	char s[10];
	for(int i=0;i<10;i++){
		s[i]=(char)(65+rand()%26);
		cout<<s[i];
	}
	cout<<endl;
	for(int i=0;i<10;i++){
		for(int j=0;j<26;j++){
			if(s[i]==(char)(65+j)){
				cout<<(char)(65+j);
				break;
			}
		}
	}
	return 0;
}
  • 有點複雜的麼!
#include<bits/stdc++.h>
using namespace std;
int n;
int digit[6];
bool judge(int x){
	int m=0,sum=0;
	while(x){
	digit[m++]=x%10;
	sum+=x%10;
	x/=10;
    }
    if(sum!=n){
    	return false;
    }
    for(int i=0;i<m/2;i++){
    	if(digit[i]!=digit[m-1-i]){
    		return false;
    	}
    }
    return true;
}
int main(){
	bool f=false;
	cin>>n;
	for(int i=100000;i<1000000;i++){
		if(judge(i)){
			cout<<i<<endl;
			f=true; 
		}
	}
	if(!f){
		cout<<-1<<endl;
	}
	return 0;
}
  • 這個簡單!
#include<bits/stdc++.h>
using namespace std;
bool rose(int i){
	int a=i/1000,b=i/100%10,c=i/10%10,d=i%10;
	int ans=a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d;
	if(ans==i){
		return true;
	}else{
		return false;
	}
}
int main(){
	int n;
	cin>>n;
	if(n<1000||n>9999){
		cout<<"error!";
	}else{
		for(int i=1000;i<=n;i++){
			if(rose(i)){
				cout<<i<<endl;
			}
		}
	}
	return 0;
}
  • 簡單到爆1!!!
#include<bits/stdc++.h>
using namespace std;

int main(){
	for(int i=1;i<=200;i++){
		int can=0,j=i;
		while(can<236&&j<=200){
			can+=j;
			j++;
		}
		if(can==236){
			cout<<i<<" "<<j-1<<endl;
		}
	}
	return 0;
}
  • 簡單到爆2!!!
#include<bits/stdc++.h>
using namespace std;

bool judge(int x){
	while(x){
	if(x%10==4){
		return true;
	}
	x/=10;
   }
   return false;
}
int main(){
	int n,m,cnt=0;
	cin>>n>>m;
	for(int i=n;i<=m;i++){
		if(!judge(i)){
			cnt++;
		}
	}
	cout<<cnt<<endl;
	return 0;
}
  • 簡單!!!:
#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	for(int a=1;a*a<=n;a++){
		for(int b=a+1;a*a+b*b<=n;b++){
			for(int c=b+1;a*a+b*b+c*c<=n;c++){
				if(a*a+b*b+c*c==n){
					cout<<a<<" "<<b<<" "<<c<<endl;
				}
			}
		}
	}
	return 0;
}
  • 老問題嘍!
#include<bits/stdc++.h>
using namespace std;
int A[55][55];
int main(){
	int n,m,ans;
	cin>>n>>m;
	ans=-1005;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>A[i][j];
		}
	}
	for(int i=0;i<n;i++){
		for(int j=1;j<n;j++){
			for(int k=0;k<m;k++){
				for(int l=k;l<m;l++){
					int temp=0;
					for(int p=i;p<=j;p++){
						for(int q=k;q<=l;q++){
							temp+=A[p][q];
						}
					}
					if(temp>ans){
						ans=temp;
					}
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}
  • 簡單到爆3!!!
#include<bits/stdc++.h>
using namespace std;

int main(){
	int N;
	cin>>N;
	for(int a=0;a*a<=N;a++){
		for(int b=0;a*a+b*b<=N;b++){
			for(int c=b;a*a+b*b+c*c<=N;c++){
				int d=sqrt(N-a*a-b*b-c*c);
				if(a*a+b*b+c*c+d*d==N){
					cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
					return 0;
				}
			}
		}
	}
	return 0;
}
  • 簡單1
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
	int n,sum,ans;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sum=0;
	ans=0;
	for(int i=0;i<n;i++){
		sum=0;
		for(int j=i;j<n;j++){
			sum+=a[j];
			if(sum>ans){
				ans=sum;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}
  • 簡單2
#include<bits/stdc++.h>
using namespace std;
int l[105];
int main(){
	int n,ans;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>l[i];
	}
	ans=10000;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			if(l[i]>=l[j]){
				if(l[i]-l[j]<ans){
					ans=l[i]-l[j];
				}
			}else{
				if(l[j]-l[i]<ans){
					ans=l[j]-l[i];
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章