Задачка про матрицы - C (СИ)
Формулировка задачи:
Нужно задать произвольную квадратную матрицу (нужно для н-го порядка)
0 0 0 ... 0
0 0 0 ... 0
.............
0 0 0 ... 0
И постепенно добавлять единицу. Но на диагонали всегда остаются нули.
Но нужно посчитать сколько матриц удовлетворяют условию :
0 1 1
1 0 1
1 1 0 (главное, чтобы в каждом столбце или строке было одинаковое количество единичек)
Нужно вывести все матрицы, и посчитать количество таких матриц, которые удовлетворяют этому условию.
Помогите придумать как это реализовать на Си
Решение задачи: «Задачка про матрицы»
textual
Листинг программы
#include <stdio.h> int arr[100][100],n,n2,nm; void print() { int x,y; for(y=0; y<n; y++) { for(x=0; x<n; x++)printf("%d ",arr[x][y]); printf("\n"); } printf("\n"); } void set01(int nn) { int i,m,x,y,s1,s2; m=(nn%n==nn/n)? 1:2; for(i=0; i<m; i++) { arr[nn%n][nn/n]=i; if(nn<n2-1) set01(nn+1); else { for(s1=x=0; x<n; x++) s1+=arr[x][0]; if(!s1) continue; for(y=1; y<n; y++) { for(s2=x=0; x<n; x++) s2+=arr[x][y]; if(s1!=s2) break; } if(y<n) continue; for(x=0; x<n; x++) { for(s2=y=0; y<n; y++) s2+=arr[x][y]; if(s1!=s2) break; } if(x<n) continue; print(); nm++; } } } int main(int argc, char* argv[]) { printf(" §¬ВҐГ**®ГЎГўГ¬ ¬ ГўГ*¨æë N:"); scanf("%d",&n); printf("\n"); n2=n*n; set01(0); printf("Е’ ГўГ*ВЁГ¦:%d\n",nm); getch(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д