Jadual Kandungan
Algoritma
Contoh
Output
Rumah pembangunan bahagian belakang C++ Masalah rajah Peterson dalam program C

Masalah rajah Peterson dalam program C

Aug 26, 2023 am 11:01 AM
bahagian kritikal saling eksklusif gambar rajah peterson

Andaikan kita mempunyai graf seperti yang ditunjukkan di bawah. Graf ini ialah gambar rajah Peterson. Bucu dinomborkan dari 0 hingga 9. Setiap bucu mempunyai beberapa huruf. Pertimbangkan berjalan W pada graf ini menggunakan bucu L. Apabila urutan huruf dalam berjalan W adalah sama dengan S, rentetan S direalisasikan dengan berjalan W. Kita boleh melawati puncak beberapa kali.

Masalah rajah Peterson dalam program C

Sebagai contoh, rentetan S serupa dengan "ABBECCD", yang dilaksanakan dengan berjalan kaki (0, 1, 6, 9, 7, 2, 3). Tugas kami adalah untuk mencari jalan-jalan seperti itu dan, jika jalan-jalan sedemikian wujud, cari jalan-jalan terkecil dari segi leksikografi. Jika tiada jalan seperti itu, -1 dikembalikan.

Algoritma

petersonGraphWalk(S, v) - Terjemahan bahasa Cina bagi

begin
   res := starting vertex
   for each character c in S except the first one, do
      if there is an edge between v and c in outer graph, then      
         v := c
      else if there is an edge between v and c+5 in inner graph, then
         v := c + 5
      else
         return false
      end if
         put v into res
      done
   return true
end
Salin selepas log masuk

Contoh

ialah:

Contoh

#include<iostream>
using namespace std;
bool adj_mat[10][10] = {{0, 1, 0, 0, 1, 1, 0, 0, 0, 0},
   {1, 0, 1, 0, 0, 0, 1, 0, 0, 0},
   {0, 1, 0, 1, 0, 0, 0, 1, 0, 0},
   {0, 0, 1, 0, 1, 0, 0, 0, 1, 0},
   {1, 0, 0, 1, 0, 0, 0, 0, 0, 1},
   {1, 0, 0, 0, 0, 0, 0, 1, 1, 0},
   {0, 1, 0, 0, 0, 0, 0, 0, 1, 1},
   {0, 0, 1, 0, 0, 1, 0, 0, 0, 1},
   {0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
   {0, 0, 0, 0, 1, 0, 1, 1, 0, 0}
};
char S[100005];
char res[100005];
bool petersonGraphWalk(char* S, int v){
   res[0] = v + &#39;0&#39;;
   for(int i = 1; S[i]; i++){
      //traverse the outer graph
      if(adj_mat[v][S[i] - &#39;A&#39;] || adj_mat[S[i] - &#39;A&#39;][v]){
         v = S[i] - &#39;A&#39;;
      }
      //then check the inner graph
      else if(adj_mat[v][S[i] - &#39;A&#39; + 5] || adj_mat[S[i] - &#39;A&#39; + 5][v]){
         v = S[i] - &#39;A&#39; + 5;
      }else{
         return false;
      }
      res[i] = v + &#39;0&#39;;
   }
   return true;
}
main() {
   char* str = "ABBECCD";
   if(petersonGraphWalk(str, str[0] - &#39;A&#39;) || petersonGraphWalk(str, str[0] - &#39;A&#39; + 5)){
      cout << res;
   }else{
      cout << -1;
   }
}
Salin selepas log masuk

Output

rreee

Atas ialah kandungan terperinci Masalah rajah Peterson dalam program C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1674
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Pelaksanaan pengecualian bersama dan bahagian kritikal fungsi C++ dalam pengaturcaraan serentak? Pelaksanaan pengecualian bersama dan bahagian kritikal fungsi C++ dalam pengaturcaraan serentak? Apr 28, 2024 am 08:42 AM

Dalam pengaturcaraan serentak, mutex dan bahagian kritikal digunakan untuk menghalang perlumbaan data. Mutex ialah struktur data yang membenarkan hanya satu utas untuk mengakses sumber yang dikongsi pada satu masa Pelaksanaan khusus adalah seperti berikut: Tentukan kelas Mutex dengan tag atom. Gunakan kaedah test_and_set() untuk mengunci dan kaedah clear() untuk membuka kunci. Bahagian kritikal ialah bahagian kod yang hanya boleh dilaksanakan oleh satu utas pada satu masa Pelaksanaan khusus adalah seperti berikut: mengisytiharkan mutex. Gunakan pembungkus lock_guard untuk mengakses sumber kongsi dalam bahagian kritikal.

Cara mengendalikan penyegerakan berbilang benang dan akses yang saling eksklusif dalam pembangunan C# Cara mengendalikan penyegerakan berbilang benang dan akses yang saling eksklusif dalam pembangunan C# Oct 08, 2023 pm 05:57 PM

Cara mengendalikan penyegerakan berbilang benang dan akses yang saling eksklusif dalam pembangunan C# memerlukan contoh kod khusus Dalam pembangunan C#, penggunaan berbilang benang boleh meningkatkan keselarasan dan prestasi program. Walau bagaimanapun, pelaksanaan serentak berbilang rangkaian juga boleh menyebabkan beberapa masalah, seperti persaingan data dan konflik sumber. Untuk menyelesaikan masalah ini, kita perlu menggunakan mekanisme penyegerakan dan pengecualian bersama untuk memastikan kerjasama yang betul antara rangkaian. Penyegerakan merujuk kepada pelaksanaan berbilang utas dalam susunan tertentu untuk memastikan hubungan kerjasama antara utas. Pengecualian bersama bermakna hanya satu urutan dibenarkan untuk mengakses sumber yang dikongsi pada masa yang sama.

Cara menangani isu penyegerakan berbilang benang dan pengecualian bersama dalam pembangunan C# Cara menangani isu penyegerakan berbilang benang dan pengecualian bersama dalam pembangunan C# Oct 10, 2023 pm 03:42 PM

Cara menangani isu penyegerakan berbilang benang dan pengecualian bersama dalam pembangunan C# memerlukan gambaran keseluruhan contoh kod tertentu: Dalam C#, penggunaan berbilang benang telah menjadi keperluan pembangunan biasa. Walau bagaimanapun, memandangkan berbilang rangkaian yang mengendalikan sumber dikongsi secara serentak boleh menyebabkan ketidakkonsistenan atau konflik data, mekanisme penyegerakan dan pengecualian bersama perlu digunakan untuk menyelesaikan masalah ini. Artikel ini akan memperkenalkan cara menangani penyegerakan berbilang benang dan isu pengecualian bersama dalam pembangunan C#, dan menyediakan contoh kod khusus. Konsep penyegerakan benang Apabila berbilang benang mengendalikan sumber yang dikongsi pada masa yang sama, ketidakkonsistenan data atau konflik mungkin berlaku.

Bermula dengan PHP: Penyegerakan dan Pengecualian Bersama Bermula dengan PHP: Penyegerakan dan Pengecualian Bersama May 21, 2023 am 08:10 AM

Dengan pembangunan Internet yang berterusan, PHP, sebagai bahasa skrip utama bahagian pelayan, digemari oleh semakin ramai pembangun. Dalam program yang ditulis dalam PHP, isu penyegerakan dan pengecualian bersama sering perlu dipertimbangkan. Artikel ini akan memperkenalkan anda kepada mekanisme penyegerakan dan pengecualian bersama dalam PHP dari perspektif pengenalan. 1. Apakah penyegerakan dan pengecualian bersama sebelum memahami penyegerakan dan pengecualian bersama, kita perlu terlebih dahulu memahami konsep konkurensi. Konkurensi yang dipanggil merujuk kepada pelaksanaan serentak beberapa utas dalam tempoh masa yang sama. Berbilang rangkaian ini boleh menyebabkan isu persaingan sumber.

临界区是指并发进程中访问共享变量的什么 临界区是指并发进程中访问共享变量的什么 Jan 14, 2021 pm 05:17 PM

临界区是指并发进程中访问共享变量的程序段。临界区指的是一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。每次只准许一个进程进入临界区,进入后不允许其他进程进入。

Penyegerakan benang Java dan pengecualian bersama: bermula dari awal, mencipta program serentak yang cekap Penyegerakan benang Java dan pengecualian bersama: bermula dari awal, mencipta program serentak yang cekap Feb 19, 2024 pm 11:09 PM

: Gambaran Keseluruhan Penyegerakan Benang Java dan Pengecualian Bersama Di Java, penyegerakan benang dan pengecualian bersama ialah teknik untuk memastikan perlumbaan data atau ketidakkonsistenan lain tidak berlaku apabila berbilang benang berkongsi data. Penyegerakan benang bermakna apabila berbilang benang mengakses data kongsi, mereka menyelaraskan akses mereka melalui beberapa mekanisme untuk memastikan ketekalan dan integriti data. Pengecualian bersama utas bermakna hanya satu utas boleh mengakses data kongsi dan utas lain hanya boleh menunggu. Mekanisme Penyegerakan Benang Java Java menyediakan pelbagai mekanisme penyegerakan benang, yang paling biasa ialah kunci dan monitor. Kunci ialah mekanisme penyegerakan peringkat rendah yang membolehkan benang memperoleh kunci sebelum memasuki bahagian kritikal (iaitu, blok kod tempat data kongsi terletak) dan lepaskan kunci selepas keluar dari bahagian kritikal. Monitor ialah penyegerakan lanjutan

Penyegerakan benang Java dan pengecualian bersama: biarkan program anda menari di dunia serentak Penyegerakan benang Java dan pengecualian bersama: biarkan program anda menari di dunia serentak Feb 19, 2024 pm 07:33 PM

Dalam sains komputer, pengaturcaraan serentak ialah apabila program boleh melaksanakan pelbagai tugas secara serentak. Ia sering digunakan untuk menggunakan sepenuhnya kuasa pengkomputeran pemproses berbilang teras dan memainkan peranan penting dalam bidang seperti antara muka pengguna, komunikasi rangkaian dan operasi pangkalan data. Walau bagaimanapun, pengaturcaraan serentak juga membawa beberapa cabaran, yang paling penting ialah cara memastikan ketekalan data dan ketepatan program apabila berbilang rangkaian mengakses sumber yang dikongsi secara serentak. Java menyediakan penyegerakan benang yang kaya dan mekanisme pengecualian bersama untuk membantu pembangun menyelesaikan cabaran dalam pengaturcaraan serentak. Mekanisme ini terutamanya termasuk kunci, operasi atom dan kata kunci yang tidak menentu. Kunci digunakan untuk melindungi sumber kongsi Ia membenarkan satu utas memonopoli sumber kongsi apabila mengaksesnya, menghalang utas lain daripada mengaksesnya pada masa yang sama, sekali gus mengelakkan ketidakkonsistenan data dan ranap program.

Masalah rajah Peterson dalam program C Masalah rajah Peterson dalam program C Aug 26, 2023 am 11:01 AM

Katakan kita mempunyai graf seperti yang ditunjukkan di bawah. Graf ini ialah gambar rajah Peterson. Bucu dinomborkan dari 0 hingga 9. Setiap bucu mempunyai beberapa huruf. Pertimbangkan berjalan W pada graf ini menggunakan bucu L. Apabila urutan huruf dalam berjalan W adalah sama dengan S, rentetan S direalisasikan dengan berjalan W. Kita boleh melawati puncak beberapa kali. Sebagai contoh, rentetan S adalah serupa dengan "ABBECCD", yang dicapai dengan berjalan (0,1,6,9,7,2,3). Tugas kami adalah untuk mencari jalan-jalan seperti itu dan, jika jalan-jalan sedemikian wujud, cari jalan-jalan terkecil dari segi leksikografi. Jika tiada jalan seperti itu, -1 dikembalikan. Algoritma petersonGraphWalk(S,v)-mula &

See all articles