枚舉法的結構:枚舉範圍循環+條件判斷語句
- 開始了,這就是枚舉?
#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;
}