Trở về đầu

foto1 foto2 foto3 foto4 foto5
Giảng viên
Nguyễn Tô Sơn - Thủ khoa Đại học Sư phạm Hà Nội
ĐT: 091.333.2869

HỌC TIN CÙNG THỦ KHOA

Thành công không phải đích đến, mà là cả một hành trình

Tìm kiếm

Mời các bạn Download code tại: Click here

1. Dữ liệu vào: Click here

- Gồm hai số N và M

2. Kết quả:

- Ghi ra các cách điền dấu +/- để biểu thức sau đúng:

? 1 ? 2 ? 3 ? ... ? M = N

const fi = 'DIENDAU.INP';
      fo = 'DIENDAU.OUT';
      MAXN = 20;
      dau:    array [1..2] of char    = ('+', '-');
      giatri: array [1..2] of integer = ( 1 ,  -1); // gia tri cua dau
var f: text;
    n, m, s: integer;
    a: array [1..MAXN] of char;
    dem: integer;


procedure Nhap;
begin
        assign(f, fi); reset(f);
        readln(f, n, m);
        close(f);
        dem:= 0;
        s:= 0;
end;

procedure InKQ;
var i: integer;
begin
        if s <> m then exit;
        inc(dem);
        write(f, dem:3, ': ');
        for i:= 1 to n do
                write(f, a[i], ' ', i, ' ');
        writeln(f, ' = ', m);
end;

procedure Try2(i: integer); // dien gia tri cho vi tri thu i
var j: integer;
begin
        for j:= 1 to 2 do
        begin
                a[i]:= dau[j];
                s := s + giatri[j] * i;
                if i = n then InKQ
                        else Try2(i+1);
                s := s - giatri[j] * i;
        end;
end;

BEGIN
        Nhap;
        assign(f, fo); rewrite(f);
        Try2(1);
        close(f);
END.

Mời các bạn Download code trên ngôn ngữ Java tại: Click here

import java.util.Scanner;

public class Thaythedau {
	private int n,m;
	private int dau[];
	private int a[];
	
	public void Nhap() {
		
		Scanner scan = new Scanner(System.in);
		System.out.print("Nhap gia tri n: ");
		n = scan.nextInt();
		System.out.print("Nhap gia tri m: ");
		m = scan.nextInt();
		scan.close();
	}

	public void Init() {
		a = new int[n + 1];
		dau = new int[2];
		dau[0] = -1;
		dau[1] = 1;
	}

	public void InKQ() {
		int s = 0;
		int i;
		for( i = 1; i <= n; i++ )
			s = s + a[i]*i;
		if( s == m ) {
			for(i = 1; i <= n; i++) {
				if(a[i] == 1) System.out.print(" + " + i);
				else System.out.print(" - " + i);
				
			}
			System.out.println(" = " + m);
		}
	}

	public void Try2(int i) {
		int j;
		for( j = 0; j <=1; j++) {
			a[i] = dau[j];
			if (i == n) InKQ();
			else Try2(i + 1);
		}
	}
					
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thaythedau t = new Thaythedau();
		t.Nhap();
		t.Init();
		t.Try2(1);
	}
}

Giảng viên Nguyễn Tô Sơn, Thủ khoa Đại học Sư phạm Hà Nội. Điện thoại: 091.333.2869