void run() { }
void print() { }
int _tmain() {
InitCircle() ; run() ; print() ;
system(\) ; return 0 ; } int i ;
printf(\) ; for(i = 0 ; i < count ; i++)
printf(\,f[i]) ; number * p =h ;
while(p->n < 200 && p->n + p->next->n < 200 && p->next->next->n < 200 && } count-- ;
p->n = p->n + p->next->n + p->next->next->n + p->next->next->next->n ; f[count++] = p->n ; p = p->next ;
p->next->next->next->n < 200){
5、 八皇后问题:设8皇后问题的解为 (x1, x2, x3, …,x8), 约束条件为:在8x8的棋盘上,
其中任意两个xi 和xj不能位于棋盘的同行、同列及同对角线。要求用一位数组进行存储,输出所有可能的排列。
#include \ #include \ #include \ #define N 8
int count , a[N] ,b[N][N];
int position(int i , int j) {
int ii = i - 1 ,jj = j , ok = 1 ; while((ii > 0)&&ok) {
ii-- ;
if(a[ii] == jj)
}
}
ok = 0 ;
ii = i - 1 ; jj = j ;
while((ii > 0)&&(jj > 1)&&ok) { }
ii = i - 1 ; jj = j ;
while((ii > 0)&&(jj return ok ; ii-- ; jj++ ; if(a[ii] == jj) ok = 0 ; ii-- ; jj-- ; if(a[ii] == jj) ok = 0 ; void queen(int i) { if(i <= N ) { } else { count++ ; printf(\, count); for(int j = 1 ;j <= N ;j++) printf(\,a[j-1]); printf(\) ; for(int i = 0 ;i < N ;i++) for(int j = 1 ;j <= N ;j++) { } if(position(i,j)) { } a[i-1] = j ; queen(i+1) ; { { b[i][a[i]-1] = 1; for(int j = 0 ;j < N ;j++) printf(\,b[i][j]); } printf(\); b[i][a[i]-1] = 0; } int _tmain(int argc, _TCHAR* argv[]) { queen(1) ; system(\) ; return 0; } } 6、 } 数组与广义表 10、鞍点问题: 若矩阵A中的某一元素A[i,j]是第i行中的最小值,而又是第j列中的最 大值,则称A[i,j]是矩阵A中的一个鞍点。写出一个可以确定鞍点位置的程序。 #include \ #include \ #include \ void found() { int m , n , i , j , b , k , q , f = 1; printf(\请输入数组行数:\\n\) ; scanf_s(\,&m) ; printf(\请输入数组列数:\\n\) ; scanf_s(\,&n) ; int *a = (int*)malloc(sizeof(int)*m*n) ; printf(\请输入数组值:\\n\) ; for(i = 0 ; i < m ; i++) { } printf(\输入数组为:\\n\); for(i = 0 ; i < m ; i++) { for(j = 0 ; j < n ; j++) for(j = 0 ; j < n ; j++) scanf_s(\,a+i*n+j) ; } printf(\,*(a+i*n+j)) ; printf(\); for( i = 0 ; i < m ; i++) { b = *(a+i*m) ; q = 0 ; for(j = 0 ; j < n ; j++) { } b = *(a+i*n+q) ; if(*(a+i*n+j) < b) { } b = *(a+i*n+j) ; q = j ; for(k = 0; k < m; k++) { if(b < *(a+k*n+q)) break; } if(k == m) { printf(\该数组鞍点为第%d行第%d列的数字:%d\\n\ , i+1 , q+1 , b); f = 0 ; } } if(f) printf(\没有找到鞍点。\\n\); } int _tmain(int argc, _TCHAR* argv[]) { found() ; system(\) ; return 0; 11、} 12、稀疏矩阵转置: 输入稀疏矩阵中每个元素的行号、列号、值,建立稀疏矩阵的三元组 存储结构,并将此矩阵转置,显示转置前后的三元组结构。 #include \ #include \ #include \ typedef struct { typedef struct { void In_Mat(Matrix * m) { } void Out_Mat(Matrix m) { } void Tra_Mat(Matrix * m ,Matrix * n) { } int _tmain(int argc, _TCHAR* argv[]) n->ii = m->jj ; n->jj = m->ii ; n->cc = m->cc ; for(int t = 0 ; t < n->cc ; t++) { } n->data[t].i = m->data[t].j ; n->data[t].j = m->data[t].i ; n->data[t].v = m->data[t].v ; printf(\行\\t列\\t值\\n\) ; for(int c = 0 ; c < m.cc ; c++) printf(\,m.data[c].i , m.data[c].j , m.data[c].v) ; printf(\请输入矩阵行数:\\n\) ; scanf_s(\,&m->ii) ; printf(\请输入矩阵列数:\\n\) ; scanf_s(\,&m->jj) ; printf(\请输入非零元素个数:\\n\) ; scanf_s(\,&m->cc) ; printf(\请依次输入非零元素所在的行数、列数和其值:\\n\) ; for(int c = 0 ; c < m->cc ; c++) scanf_s(\,&m->data[c].i , &m->data[c].j , &m->data[c].v) ; Triple data[100] ; int ii , jj , cc ; int i , j , v ; }Triple ; }Matrix ;