《算法设计与分析》 蛮力法实验报告一

1.(洛谷 P1008)将 1,2...9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3 的比例,试求出所有满足条件的三个三位数。

输入格式:

输出格式:

若干行,每行 3 个数字。按照每行第 1 个数字升序排列。

样例输入:

样例输出:

192 384 576

219 438 657

273 546 819

327 654 981

//1.(洛谷 P1008)将 1,2...9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3
//的比例,试求出所有满足条件的三个三位数。
public class Main {
    public static void main(String[] args) {
        for (int i = 123; i < 333; i++) {
            int a=i;
            int b=2*i;
            int c=3*i;
            boolean flag=false;
            flag=(a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==1*2*3*4*5*6*7*8*9
                    &&(a/100)+(a/10%10)+(a%10)+(b/100)+(b/10%10)+(b%10)+(c/100)+(c/10%10)+(c%10)==1+2+3+4+5+6+7+8+9;
            if (flag){
                System.out.println(a+" "+b+" "+c);
            }
        }
    }
}

 《算法设计与分析》 蛮力法实验报告一_第1张图片

 2.(洛谷 P4305)给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。

输入格式:
本题有多组数据。
第一行一个整数 T,表示数据组数。
对于每组数据:第一行一个整数 n。第二行 n 个数,表示给定的数。
输出格式:
对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。
样例输入:
2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6
样例输出:
1 2 18 3 19 6 5 4
1 2 3 4 5 6

 #include
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
inline int read()
{
    char c = getchar(); int x = 0, f = 1;
    for (; !isdigit(c); c = getchar())if (c == '-')f = -1;
    for (; isdigit(c); c = getchar())x = x * 10 + c - 48;
    return x * f;
}
int T, n, x;
unordered_maps;//定义
void work()
{
    s.clear();//清空
    n = read();
    For(i, 1, n) {
        x = read();
        if (!s[x]) {//没有的话,直接输出+标记掉。
            printf("%d ", x);
            s[x] = 1;
        }
    }puts("");//换行
}
int main()
{
    T = read();
    while (T--)work();
    return 0;
}

你可能感兴趣的:(算法,算法,java,开发语言)