这个题,一开始犯了一个很幼稚的错误
贴贴代码
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<time.h> #include <strings.h> #include <queue> #include <set> #include <cstring> #include<vector> using namespace std; int a[10]={1,2,5,6,8,9,0};//0~6 vector<int> v1; vector<int> v2; int main(){ int q; int b; for (int i = 0; i < 6; ++i) { for (int j = 0; j < 7; ++j) { for (int k = 0; k < 7; ++k) { for (int l = 0; l < 6; ++l) { q=a[i]*1000+a[j]*100+a[k]*10+a[l]-a[l]*1000-a[k]*100-a[j]*10-a[i]; if(q<300 && q>200) { cout<<a[i]<<a[j]<<a[k]<<a[l]<<" "<<q<<endl; v1.push_back(q); } } } } } cout<<"an"; for (int i = 0; i < 6; ++i) { for (int j = 0; j < 7; ++j) { for (int k = 0; k < 7; ++k) { for (int l = 0; l < 6; ++l) { b=a[i]*1000+a[j]*100+a[k]*10+a[l]-a[l]*1000-a[k]*100-a[j]*10-a[i]; if(b<900 && b>800){ cout<<a[i]<<a[j]<<a[k]<<a[l]<<" "<<b<<endl; v2.push_back(b); } } } } } vector<int>::iterator it; vector<int>::iterator m; for(it=v1.begin();it!=v1.end();it++) cout<<*it<<" "; cout<<endl; for ( m = v2.begin(); m != v2.end(); ++m) cout<<*m<<" "; }
,,,,我忽略了有的数,倒过来就不是它了,,,比如6和9
就死在这里了呜呜呜
//这个题我一开始以为挺简单的,后来,, // // Created by snnnow on 2020/7/15. // //要注意一一下你存储数据,用vector存,直接存一个结构体就好 #include<iostream> #include <sstream> #include <string.h> #include <vector> using namespace std; struct price{ int a,b,c; };//用的时候直接price p={1,2,3}就可以 vector<price> v1; vector<price> v2; char to(char c){ if(c=='1') return '1'; if(c=='2') return '2'; if(c=='5') return '5'; if(c=='6') return '9'; if(c=='8') return '8'; if(c=='9') return '6'; if(c=='0') return '0'; } void i2s(int i, string &str){//一定要注意是引用 stringstream ss; ss<<i; ss>>str; } void s2i(string &str,int &i){ stringstream ss; ss<<str; ss>>i; } string reverse(const string &str){//不要忘记加引用 string ans; for (int i = 3; i >=0 ; --i) { ans.insert(ans.end(),to(str[i]));//string中的insert函数 } return ans; } int main(){ for (int i = 1000; i < 10000; ++i) { //cout<<i<<endl; //先转字符串 string str; string rstr; i2s(i,str); //cout<<str<<endl; if(str.find('3')!=string::npos || str.find('4')!=string::npos || str.find('7')!=string::npos ||str.rfind('0')==3) continue; rstr=reverse(str); int r; s2i(rstr,r);//r是反转后的价格 int plus=r-i; //cout<<r<<" "<<i<<" "<<plus<<endl; if(plus>-300 && plus<-200){ price p1={i,r,plus}; v1.push_back(p1); }else if(plus>800 && plus<900){ price p2={i,r,plus}; v2.push_back(p2); } } // for (int k = 0; k < v1.size(); ++k) { // cout<<v1[k].c<<" "; // // } // for (int k = 0; k < v2.size(); ++k) { // cout<<v2[k].c<<" "; // // } //vector遍历不必需要迭代器!!!! for (int j = 0; j < v1.size(); ++j) { for (int i = 0; i < v2.size(); ++i) { if(v1[j].c+v2[i].c==558){ cout<<v1[j].a<<" "; } } } }