Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ นับจำนวนการหารสูงสุด ทำได้ในกราฟตามเงื่อนไขที่กำหนด


สมมติว่าเรามีเมทริกซ์การชิดกันของกราฟ G เราต้องตรวจสอบว่าเราสามารถแบ่งจุดยอดออกเป็นชุดที่ไม่ว่างได้หรือไม่ V1, ... Vk เช่นนั้น:ทุกขอบเชื่อมจุดยอดสองจุดที่เป็นชุดที่อยู่ติดกันสองชุด ถ้าคำตอบคือใช่ เราต้องหาค่าสูงสุดของเซต k ในการหารดังกล่าว

ดังนั้นหากอินพุตเป็นแบบ

0 1 0 1 1 0
1 0 1 0 0 1
0 1 0 1 0 0
1 0 1 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0

แล้วผลลัพธ์จะเป็น 4

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

กำหนดอาร์เรย์ dp ของขนาด:210.n :=ขนาดของ matrixfl :=1ans :=0 สำหรับการเริ่มต้น i :=0 เมื่อฉัน  

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include ใช้เนมสเปซ std;int แก้ปัญหา (เวกเตอร์<เวกเตอร์> เมทริกซ์){ int dp[210]; int n =matrix.size(); int fl =1; int ans =0; สำหรับ (int i =0; i  q; q.push(i); ในขณะที่ (!q.empty()){ int x =q.front(); q.ป๊อป(); สำหรับ (int j =0; j > matrix ={ 0, 1, 0, 1, 1, 0 }, { 1, 0, 1, 0, 0, 1 }, { 0, 1, 0, 1, 0, 0 }, { 1, 0, 1, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0 } }; ศาล <<แก้ (เมทริกซ์) < 

อินพุต

<ก่อนหน้า>{ { 0, 1, 0, 1, 1, 0 }, { 1, 0, 1, 0, 0, 1 }, { 0, 1, 0, 1, 0, 0 }, { 1, 0 , 1, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0 } }

ผลลัพธ์

4