金币阵列问题。有m*n枚金币在桌面上排成一个金币阵列。每一个金币正面朝上,或背面朝上,分别用0和1表示。 金币阵列游戏的规则是:(1)每次可将任一行金币翻过来放在原来的位置上;(2)每
2016-09-04 17:24
771 查看
#include <stdio.h> #include <math.h> #define MAX 10 int main() { int num, change; int m, n, score = 0; int a[MAX][MAX] = { 0 }; int b[MAX][MAX] = { 0 }; int c[MAX] = { 0 }; int lienum = 0; printf( "输入要输入的数据组数:\n" ); scanf( "%d", &num ); for ( num; num > 0; num-- ) { change = 0; printf( "输入行数&列数:\n" ); scanf( "%d %d", &m, &n ); for ( int i = 1; i <= m; i++ ) for ( int j = 1; j <= n; j++ ) { scanf( "%d", &a[i][j] ); } printf( "输入目标矩阵:\n" ); for ( int i = 1; i <= m; i++ ) for ( int j = 1; j <= n; j++ ) { scanf( "%d", &b[i][j] ); } for ( int i = 1; i <= m; i++ ) for ( int j = 1; j <= n; j++ ) { if ( a[i][j] == b[i][j] ) { score++; }else { c[lienum] = j; /* 记住不相同列 */ lienum++; if ( lienum == n ) /*同一行所有列不同进行翻转 */ { for ( int q = 1; q <= n; q++ ) { b[i][q] = abs( b[i][q] - 1 ); } change++; printf( "所在行:%d 反转结果:%d\n", i, b[i][1] ); printf( "同一行所有列不同进行翻转一次%d\n", change ); } if ( lienum == 2 ) /*有两列不同交换两列 */ { int swap = b[i][c[0]]; b[i][c[0]] = b[i][c[1]]; b[i][c[1]] = swap; change++; printf( "同一行偶数列不同进行翻转一次%d\n", change ); printf( "交换了i:%d a:%db:%d\n", i, b[i][c[0]], b[i][c[1]] ); } } } if ( change == 0 ) printf( "无法完成交换 -1" ); else printf( "交换了:%d次\n", change ); } return(0); }
格式使用的在线代码美化器 http://web.chacuo.net/formatc
相关文章推荐
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
- 二、给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- 牛牛和15朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成26份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地价值和尽可能大,你知道这个值最大可以是多少吗? 输入两个整数n和m(1≤n,m≤75)表示田地的大小,接下来n行,每行包括m个0-9之间的数字,表示每块
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- 定义一个int型数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,最后一个元素的值是原来第一个元素的值,然后输出这个数组
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- 2017-5-14 湘潭市赛 Partial Sum 给n个数,每次操作选择一个L,一个R,表示区间左右端点,该操作产生的贡献为[L+1,R]的和的绝对值-C。 0<=L<R<=n; 如果选过L,R这两个位置,那么以后选择的L,R都不可以再选择这两个位置。最多操作m次,求可以获得的 最大贡献和。
- C++递归问题之二——n皇后问题:以四、八皇后为例,给定n个皇后要求将它们放在一个n维矩阵中,任意两个皇后不能出现在同一行、列、主副对角线上,输出具体的摆放方式
- 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- Problem Description 青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。 Input 输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。 O
- 网易面试题之给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢, * 和一般的游戏所不同的是,他每一步
- 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)
- 不显示查询问题的解决(太完美了,新建一个图层,表示查询结果)
- 但每次进行编译就有一个问题 编的程序是正确的 我才学编程
- .net问题:每次打开.net2003就会出现一个安装程序界面,每次都如此,请问是怎么回事啊??
- 分别使用静态数组与动态数组建立一个区域 - 回复 "老A123" 的问题
- 现在,有两个整数A和B,例如A是345,B是478,现在,需要把B插入到A里, 而A有三位,所以有四个位置选择,所得结果分别是: 478345, 347845, 344785, 345478 我们通过对比可以知道,在这当中最小的一个是344785