1、找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。
// // main.c // andian // // Created by lanou on 13-10-22. // Copyright (c) 2013年 星星科技. All rights reserved. // #include <stdio.h> #include <stdlib.h> #define N 3 #define M 3 /* int i,j,k,max,maxj,flag; int a[N][M]={ {1,9,6} ,{2,7,5} ,{8,9,3} }; for(i=0;i<N;i++) { max=a[i][0]; maxj=0; for(j=0;j<M;j++) { if(a[i][j]>max) { max=a[i][j]; maxj=j; } } flag=1; for(k=0;k<N;k++) if(max>a[k][maxj]) { flag=0; break; } if(flag) { printf("a[%d][%d]=%d ",i,maxj,max); break; } } if(!flag) printf("Tt is not exist! "); return 0; */ int main(void) { int number[3][4] = {0};//假定产生一个3x4的数组 for (int i = 0; i < 3; i ++) {//产生12个元素放到3x4的数组中,并且输出。 for (int j = 0; j < 4; j++) { number[i][j] = arc4random()%100; printf("%d ",number[i][j]); } printf(" "); } int count = 0;//鞍点个数 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { int max = number[i][j];//让max先等于当前数字 int isMax = 1,isMin = 1; for (int column = 0; column < 4; column++) {//让max和本行的每个数字比较,如果max<本行的其他数字说明这个数number[i][j]不是鞍点 if (max < number[i][column]) { isMax = 0; break; } } if(isMax == 0){ continue; } int min = number[i][j]; for (int row = 0; row < 3; row ++) {//让min和本列的每个数字比较,如果min>本列的其他数字说明这个数number[i][j]不是鞍点 if (min > number[row][j]) { isMin = 0; break; } } if (isMin == 0) { continue; } if (max == min) { count ++; printf("Saddlepoint number[%d][%d] = %d ",i,j,number[i][j]); } } } if (count == 0) { printf("没有鞍点"); } return 0; }
2、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:
13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,
最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。
void yesuzhaopantu() { /* 2、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。 */ //思路解析: 找一个a[13]的数组,所有位为0,开始以n = 3 报数 到3变1 int a[13] = {0}; int n = 1 , p = 0; for(int i = 0 ; i < 14; i ++){ // i 表示人数(0-12) 13 取不到的 if(i == 13){ i = -1; continue; } //n是报数 if(n == 3){ if(a[i] == 0){ a[i] = 1; n = 0; p++; }else{ n = 2 ; } } //p是点到名的人数 if(p == 12){ break; } n++; } for (int j = 0 ; j < 13; j ++) { if(a[j] == 0 ){ printf("%d",j+1); } } }