Advertisement
Ladies_Man

Виз. Распозн (vis_Recognizer)

Jun 4th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.92 KB | None | 0 0
  1. package main
  2. import "fmt"
  3.  
  4. type state struct {
  5.         num_of_hits int
  6. }
  7.  
  8. func main() {
  9.     var N, K, q_start, hit int
  10.     fmt.Scanf("%d\n", &K)
  11.     alphabet := make([]string, K)
  12.     for i := 0; i < K; i++ { fmt.Scanf("%s\n", &alphabet[i]) }
  13.     fmt.Scanf("%d\n", &N)
  14.     transit_matrix, final_state, matrix := make([][]int, N), make([]int, N), make([][]state, N)
  15.     for i := 0; i < N; i++ { matrix[i] = make([]state, N); for j := 0; j < N; j++ { matrix[i][j].num_of_hits = 0 } }
  16.     for i := 0; i < N; i++ { transit_matrix[i] = make([]int, K) }
  17.     for i := 0; i < N; i++ { for j := 0; j < K; j++ { fmt.Scanf("%d", &transit_matrix[i][j]) }; fmt.Scanf("\n") }
  18.     for i := 0; i < N; i++ { fmt.Scanf("%d\n", &final_state[i]) }
  19.     fmt.Scanf("%d", &q_start)
  20.     fmt.Printf("digraph {\n\trankdir = LR\n\tdummy [label = \"\", shape = none]\n")
  21.     for i := 0; i < N; i++ { if 1 == final_state[i] { fmt.Printf("\t%d [shape = doublecircle]\n", i) } else { fmt.Printf("\t%d [shape = circle]\n", i) } }
  22.     fmt.Printf("\tdummy -> %d\n", q_start)
  23.     for i := 0; i < N; i++ { for j := 0; j < N; j++ { for k := 0; k < K; k++ { if j == transit_matrix[i][k] { matrix[i][j].num_of_hits++ } } } }
  24.     for i := 0; i < N; i++ {
  25.         hit = 0
  26.         for j := 0; j < N; j++ {
  27.             if 0 != matrix[i][j].num_of_hits {
  28.                 fmt.Printf("\t%d -> %d [label = \"%s", i, j, alphabet[hit])
  29.                 for k := hit + 1; k < matrix[i][j].num_of_hits; k++ { fmt.Printf(", %s", alphabet[k]) }
  30.                 fmt.Printf("\"]\n")
  31.                 hit++
  32.             }
  33.         }
  34.     }
  35. }
  36.  
  37. /*in:
  38. 2
  39. a b
  40. 4
  41. 1 3
  42. 1 2
  43. 3 3
  44. 3 3
  45. 0
  46. 0
  47. 1
  48. 0
  49. 0
  50. */
  51. /*out:
  52. digraph {
  53.         rankdir = LR
  54.         dummy [label = "", shape = none]
  55.         0 [shape = circle]
  56.         1 [shape = circle]
  57.         2 [shape = doublecircle]
  58.         3 [shape = circle]
  59.         dummy -> 0
  60.         0 -> 1 [label = "a"]
  61.         0 -> 3 [label = "b"]
  62.         1 -> 1 [label = "a"]
  63.         1 -> 2 [label = "b"]
  64.         2 -> 3 [label = "a, b"]
  65.         3 -> 3 [label = "a, b"]
  66. }
  67. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement