C Online Compiler
Example: Find Symmetric Pairs (Optimized with Printed Flags) in C
C
C++
C#
Java
Python
PHP
main.c
STDIN
Run
// Find Symmetric Pairs (Optimized with Printed Flags) #include
#include
// Required for boolean type // Structure to represent a pair of integers struct Pair { int first; int second; }; int main() { // Step 1: Define the array of pairs struct Pair pairs[] = {{1, 2}, {3, 4}, {5, 2}, {2, 1}, {4, 3}, {6, 7}, {7, 6}}; int n = sizeof(pairs) / sizeof(pairs[0]); // Step 2: Create a boolean array to track if a pair has been printed bool was_printed[n]; for (int i = 0; i < n; i++) { was_printed[i] = false; // Initialize all flags to false } printf("Original Pairs:\n"); for (int i = 0; i < n; i++) { printf("(%d, %d) ", pairs[i].first, pairs[i].second); } printf("\n\n"); printf("Symmetric Pairs:\n"); // Step 3: Iterate through each pair using the outer loop for (int i = 0; i < n; i++) { // Step 4: Check if the current pair has already been marked as part of a symmetric pair if (!was_printed[i]) { // Step 5: Look for its symmetric counterpart in the subsequent pairs for (int j = i + 1; j < n; j++) { // Step 6: If pairs[j] is the symmetric counterpart AND it hasn't been printed yet if (!was_printed[j] && pairs[i].first == pairs[j].second && pairs[i].second == pairs[j].first) { printf("(%d, %d) and (%d, %d)\n", pairs[i].first, pairs[i].second, pairs[j].first, pairs[j].second); was_printed[i] = true; // Mark both pairs as printed was_printed[j] = true; break; // Move to the next unique pair in the outer loop after finding a match } } } } return 0; }
Output
Clear
ADVERTISEMENTS