Showing posts with label Thuật toán. Show all posts
Showing posts with label Thuật toán. Show all posts

Mar 28, 2018

Open - Close

Ghi nhớ: Hãy làm cho mã nguồn của bạn đáp ứng được nguyên tắc “Luôn đóng cho sự chỉnh sửa, và luôn mở cho việc mở rộng” càng nhiều càng tốt. Nói cách khác, hãy thiết kế mã nguồn sao cho không cần phải thay đổi gì nhiều nhưng luôn có thể mở rộng khi cần.

Dec 22, 2015

JavaScript: Chuyển tiếng Việt có dấu sang không dấu

function change_alias(alias) {
    var str = alias;
    str = str.toLowerCase();
    str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g,"a");
    str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g,"e");
    str = str.replace(/ì|í|ị|ỉ|ĩ/g,"i");
    str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g,"o");
    str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g,"u");
    str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g,"y");
    str = str.replace(/đ/g,"d");
    str = str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'|\"|\&|\#|\[|\]|~|\$|_|`|-|{|}|\||\\/g," ");
    str = str.replace(/ + /g," ");
    str = str.trim();
    return str;
}

Sep 20, 2015

Sort

#include<algorithm>
#include<functional> // std::greater
using namespace std;

long long a[100005];
long long n;

int main()
{
    sort(a, a+n); // sắp xếp mảng a tăng dần từ phần tử 0 đến phần tử n-1
    sort(a+1, a+1+n); // sắp xếp mảng a tăng dần từ phần tử 1 đến phần tử n
    sort(a, a+n, greater<int>()); // sắp xếp mảng a giảm dần từ p.tử 0 đến p.tử n-1
}

library.cpp

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>

using namespace std;

int n;
int a[10001];

void input(){
    scanf("%d", &n);
    for(int i=1;i<=n;i++)
            scanf("%d", &a[i]);
}

void khoi_tao(){
    long dem;
    int tg;
    dem = 0;
    for(int i=1;i<=n;i++)
            for(int j=i+1;j<=n;j++)
                    if(a[i]>a[j]){
                        dem++;
                        tg = a[i];
                        a[i] = a[j];
                        a[j] = tg;
                    }
    std::sort(a, a+n);
    printf("%d", dem);
}

int main(){
    input();
    khoi_tao();
    return 0;
}

Feb 4, 2015

out và ref trong C#

- Cả out và ref được dùng khi ta muốn truyền tham chiếu vào hàm.

- Dùng ref khi mà cần thay đổi giá trị tham số truyền vào và có quan tâm đến giá trị truyền vào là bao nhiều (vì thế cần khởi tạo giá trị trước khi truyền vào) rồi mới thay đổi.

void refFunc(ref int i) 
{
      i++;
}

int n;
refFunc(ref n);
//Không được vì n chưa khởi tạo.

int n = 3;
refFunc(ref n);
//Được, n = 4

- Dùng out khi mà cần thay đổi giá trị tham số truyền vào, nhưng không quan tâm giá trị tham số truyền vào là bao nhiêu (ta phải khởi tạo lại giá trị này trong hàm) rồi mới thay đổi.

void outFunc(out int i)
{
       i = 0;  
        i++;
}

int n;
outFunc(out n);
//n = 1

int n = 5;
outFunc(out n);
//n = 1; khổng phải 6

Jan 9, 2015

Giải thuật

- Đệ quy

- Danh sách liên kết

- Stack

- Hàng đợi

-Cây

- Tìm UCLN
1. int UCLN (int a, int b)
{
        return b?UCLN(b,a%b):a;
}

- Sắp xếp
Nổi bọt
Lựa chọn
Merge sort
Quick sort
Heap sort