[๋ฐฑ์ค€/C++] 2098๋ฒˆ ์™ธํŒ์› ์ˆœํšŒ

2022. 7. 16. 15:50ยทPS/C++
728x90
๋ฐ˜์‘ํ˜•

๋ฐฑ์ค€
๋ฐฑ์ค€
2098๋ฒˆ ์™ธํŒ์› ์ˆœํšŒ
2098๋ฒˆ ์™ธํŒ์› ์ˆœํšŒ


๐Ÿค”๋ฌธ์ œ ์ดํ•ด

๋ชจ๋“  ๋„์‹œ๋ฅผ ๊ฑฐ์น˜๊ณ  ๋‹ค์‹œ ์ฒ˜์Œ ๋„์‹œ๋กœ ๋Œ์•„์˜ค๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ ์ค‘ ๋น„์šฉ์ด ๊ฐ€์žฅ ์ ๊ฒŒ ๋“œ๋Š” ๊ฒฝ๋กœ์˜ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


๐Ÿ’ก์ฒซ๋ฒˆ์งธ ์•„์ด๋””์–ด

 

๊ทธ๋ƒฅ ์ˆœ์—ด์„ ๊ตฌํ•ด์„œ ํ’€๋ฉด ์ตœ๋Œ€ 16! =20,922,789,888,000์œผ๋กœ 1์ดˆ ์•ˆ์— ์ ˆ๋Œ€ ํ’€ ์ˆ˜ ์—†๋‹ค.

์ด ๋ฌธ์ œ๋Š” 1์ฃผ์ฐจ ์Šคํ„ฐ๋””์—์„œ ๋ฐฐ์šด ๋น„ํŠธ๋งˆ์Šคํ‚น์— ๋Œ€ํ•œ ๋ฌธ์ œ์˜€๊ณ , ๋ฌธ์ œ ํ’€์ด ๋ฐฉ์‹์„ ๊ฑฐ์˜ ๋‹ค ๋ฐฐ์› ์–ด์„œ DP์™€ ๋น„ํŠธ๋งˆ์Šคํ‚น์œผ๋กœ ๋ฐ”๋กœ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฌผ๋ก  DP ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆฌ๊ธด ํ–ˆ๋‹ค.

 

 

๐Ÿ”ฅํ’€์ด๐Ÿ”ฅ

dp[i][j]๋Š” ํ˜„์žฌ ์œ„์น˜ i์™€ ํ˜„์žฌ๊นŒ์ง€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ •์ ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ j ๊ฐ’์ผ ๋•Œ, ์•ž์œผ๋กœ ํ•„์š”ํ•œ ์ˆœํšŒ ๋น„์šฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

j๊ฐ€ (1 << ์ •์ ์˜ ๊ฐœ์ˆ˜) -1๊ณผ ๊ฐ™์œผ๋ฉด ํ˜„์žฌ ๋ชจ๋“  ์ •์ ์„ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๊ฐ ์ •์ ์— ๋Œ€ํ•ด ์ „๋ถ€ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋˜๋ฏ€๋กœ ์ •๋‹ต์€ dp[์ฒ˜์Œ ์ •์ ][1]์ด๋‹ค.

 


์•„๋ž˜๋Š” ์ œ์ถœํ•œ ์ฝ”๋“œ์ด๋‹ค.

#include <iostream>
#include <cmath>

using namespace std;
#define MAX 1000000000;

int dp[17][65537];
int w[17][17];
int n;

int solve(int cur, int visit) {
    if (visit == (1 << n) - 1 && w[cur][0])
        return w[cur][0];

    if (dp[cur][visit]) return dp[cur][visit];
    dp[cur][visit] = MAX;

    for (int i = 1; i < n; i++) {
        if (visit & (1 << i)) continue;
        if (!w[cur][i]) continue;
        dp[cur][visit] = min(dp[cur][visit], solve(i, visit | (1 << i)) + w[cur][i]);
    }
    return dp[cur][visit];
}


int main() {
    cin.tie(NULL);
    ios::sync_with_stdio(false);

    cin >> n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> w[i][j];
        }
    }
    cout << solve(0, 1);
}

 

 

728x90
๋ฐ˜์‘ํ˜•

'PS > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€/C++] 1162๋ฒˆ ๋„๋กœํฌ์žฅ  (0) 2022.07.16
[๋ฐฑ์ค€/C++] 1005๋ฒˆ ACM Craft  (0) 2022.07.16
[๋ฐฑ์ค€/C++] 1753๋ฒˆ ์ตœ๋‹จ๊ฒฝ๋กœ  (0) 2022.07.15
[๋ฐฑ์ค€/C++] 14888๋ฒˆ ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ  (0) 2022.07.13
[๋ฐฑ์ค€/C++] 1790๋ฒˆ ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 2  (0) 2022.07.11
'PS/C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€/C++] 1162๋ฒˆ ๋„๋กœํฌ์žฅ
  • [๋ฐฑ์ค€/C++] 1005๋ฒˆ ACM Craft
  • [๋ฐฑ์ค€/C++] 1753๋ฒˆ ์ตœ๋‹จ๊ฒฝ๋กœ
  • [๋ฐฑ์ค€/C++] 14888๋ฒˆ ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • ๊ธฐํƒ€ (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • ์ž๋ฐ”์˜ ์‹  (32)
        • ์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด (7)
      • ETC (4)
        • Blog (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    aws
    ์ž๋ฐ”
    ๋ฉ€ํ‹ฐ์บ ํผ์Šคit๋ถ€ํŠธ์บ ํ”„
    ๋ถ€ํŠธ์บ ํ”„ํ›„๊ธฐ
    boj
    C++
    ์Šคํ”„๋ง ์ž…๋ฌธ
    ํด๋ผ์šฐ๋“œ ํ™œ์šฉ ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด ๋ถ€ํŠธ์บ ํ”„
    1์ผ1๋ฐฑ์ค€
    ์Šคํ„ฐ๋””
    ๋ฐฑ์ค€
    TiL
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    GodOfJava
    ์—์Šค๋„ท์‹œ์Šคํ…œ ๋ถ€ํŠธ์บ ํ”„
    ์—์Šค๋„ท์‹œ์Šคํ…œ
    EC2
    Java
    ์ž๋ฐ”์˜ ์‹ 
    ๊ฐ์ฒด์ง€ํ–ฅ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
yulee_to
[๋ฐฑ์ค€/C++] 2098๋ฒˆ ์™ธํŒ์› ์ˆœํšŒ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”