一个两位数乘以一个三位数等于一个四位数,这些数字都是从1-9组成,而且不重复,求出所有的结果。
  本人分不多,所以也给不了多少啦,就算帮个忙了。本人学了JAVA基础,可总是不能进一步提高,现在也刚入公司上班,想尽快提高水平,不知大伙有啥建议,或带我也行,我是用心的,有意的留下联系方式了,我会很努力的。

解决方案 »

  1.   

    你说的不够具体·我做出两种情况的给你·· int liangWeiShu = 0;
    int sanWeiShu = 0;
    for(int i=1;i<=9;i++){
    for(int j=1;j<=9;j++){
    if(i!=j){
    liangWeiShu=10*i+j;
    }
    for(int m=1;m<=9;m++){
    if(i!=j&&j!=m&&i!=m){
    sanWeiShu=100*i+10*j+m;
    }
    }

    if((sanWeiShu*liangWeiShu)<10000&&(sanWeiShu*liangWeiShu)>=1000){
    System.out.print(liangWeiShu+"x"+sanWeiShu+"="+sanWeiShu*liangWeiShu+" ");
    }
    }
    }
      

  2.   

    奉上C++的代码,其实想法是一样的,我是先进行全排列,然后判断#include <iostream>
    #include <string>
    using namespace std;string num = "123456789";
    int n = 9;
    string s = "123456789";
    bool sign[9];void work(int k) {
    int i;
    if( k == n ) {
    string s1 = s.substr(0, 2);
    string s2 = s.substr(2, 3);
    string s3 = s.substr(5, 4);
    int a = atoi(s1.c_str());
    int b = atoi(s2.c_str());
    int c = atoi(s3.c_str());
    if( a * b == c )
    cout << s1 << " * " << s2 << " = " << s3 << endl;
    }
    else {
    for(i = 0; i < n; i++) {
    if(!sign[i]) {
    s[k] = num[i];
    sign[i] = true;
    work(k+1);
    sign[i] = false;
    }
    }
    }
    }
    int main() {
    for(int i = 0 ; i < 9; i++) {
    sign[i] = false;
    }
    work(0);
    }
      

  3.   

    上面的美女,不好意思,是我没有说清楚,我指的是两位数、三位数、四位数总共9个数字组成的,这9个数字不能重复。alfredtofu的答案倒正确,但感觉效率好像不太高,不过还是谢谢你们了!