没有合适的资源?快使用搜索试试~ 我知道了~
算法设计求金币阵列问题
4星 · 超过85%的资源 需积分: 23 16 下载量 131 浏览量
2010-10-15
10:46:01
上传
评论 1
收藏 3KB TXT 举报
温馨提示
试读
4页
问题描述: 有m´ n(m <= 100,n <= 100)个金币在桌面上排成一个m行n 列的金币阵列。每一枚金 币或正面朝上或背面朝上。用数字表示金币状态,0表示金币正面朝上,1 表示背面朝上。 金币阵列游戏的规则是: (1)每次可将任一行金币翻过来放在原来的位置上; (2)每次可任选2 列,交换这2 列金币的位置。 算法设计: 给定金币阵列的初始状态和目标状态,计算按金币游戏规则,将金币阵列从初始状态变 换到目标状态所需的最少变换次数。 数据输入: 文件中有多组数据。文件的第1行有1 个正整数k,表 示有k 组数据。每组数据的第1 行有2 个正整数m 和n。以下的m行是金币阵列的初始状 态,每行有n 个数字表示该行金币的状态,0 表示金币正面朝上,1 表示背面朝上。接着的 m行是金币阵列的目标状态。 «结果输出: 相应数据无解时 输出-1。 输入文件示例 2 4 3 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 4 3 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 输入文件示例 2 -1
资源推荐
资源详情
资源评论
#include<iostream>
using namespace std;
const int N = 110 ;
int a[N][N],b[N][N],c[N][N];
int n,m,num;
void ChangeL(int x,int y)//变换列
{
if(x==y)return;
int i;
for(i=1;i<=n;i++)
{
int temp=c[i][y];
c[i][y]=c[i][x];
c[i][x]=temp;
}
num++;
}
void ChangeH(int x)//变换行
{
int i;
for(i=1;i<=m;i++)
{
c[x][i]^=1;
}
}
bool Same(int x,int y) //判断列是否满足条件
{
int i;
for(i=1;i<=n;i++)
using namespace std;
const int N = 110 ;
int a[N][N],b[N][N],c[N][N];
int n,m,num;
void ChangeL(int x,int y)//变换列
{
if(x==y)return;
int i;
for(i=1;i<=n;i++)
{
int temp=c[i][y];
c[i][y]=c[i][x];
c[i][x]=temp;
}
num++;
}
void ChangeH(int x)//变换行
{
int i;
for(i=1;i<=m;i++)
{
c[x][i]^=1;
}
}
bool Same(int x,int y) //判断列是否满足条件
{
int i;
for(i=1;i<=n;i++)
资源评论
- wuliao5222013-09-11好,很好,非常好,
K5012
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功