题:有任意N个硬币正面朝上,每次翻转n个硬币知道将N个硬币全部翻转成反面。(*表示正面,0表示反面)

源代码如下:

/*
**翻转硬币问题,设共有N个硬币,一次允许翻转n<N个,需翻转x步,每个硬币翻转y次,
**则N*y==n*x,即n/N==y/x,因为要翻转,y必须为奇数,判断n/N若为最简分数,如n不为奇数则不能翻转成功
**如果n为奇数,则x取最小值时为n=y,N=x;若n/N不是最简分数,化成最简分数n1/N1,按照上面的步骤
**判断,若n1为奇数则可以翻转。
*/#include<stdio.h>
#include<string.h>char s[100];
int gcb(int a,int b);
int is_even(int a);
int turn_over(int N,int n,int x);int main(){int N,n,x,y,g;int j;printf("请输入硬币的个数:\n");scanf("%d",&N);do{printf("请输入一次翻转的硬币个数:\n");scanf("%d",&n);g = gcb(N,n);y = n/g;if(is_even(y)==0)printf("不能翻转成功!\n");}while(is_even(y)==0);x = N/g;printf("初始状态:\n");for(j=0;j<N;j++){s[j]='*';printf("%3c",'*');}printf("\n\n");turn_over(N,n,x);return 0;}int gcb(int a,int b)   //求两个数的最大公约数
{int c;if(b>a){c = a;a = b;b = c;}while(b != 0){c = a%b;a = b;b = c;}return a;
}int is_even(int a)  //判断是否为偶数,是则返回0
{while(a > 0){a = a-2;}return a;
}int turn_over(int N,int n,int x)
/*实现翻转函数*/
{int i,j,k;for(i = 0;i<x;i++){j = N/x*(i);  //第i+1步翻转的起始位置printf("第%d步:\n",i+1);getch();for(k=1;k<=n;k++)  //k计数作用,即每次从s[j]开始翻转n个{if(s[j]=='0')s[j] = '*';elses[j] = '0';j = (j+1)%N;  //j到达上限,但没翻转够n个则从头翻转}for(j = 0;j<N;j++)printf("%3c",s[j]);printf("\n\n");}return 0;
}

是比较简单的,应该不会有疑问

归纳算法——硬币翻转问题相关推荐

  1. 洛谷 洛谷 P2708 硬币翻转(高端算法)

    //DAY3.B //题源:洛谷 P2708 硬币翻转 //原题链接:https://www.luogu.com.cn/problem/P2708 #include<stdio.h> #i ...

  2. 算法题 - 翻转硬币 - Python

    问题描述: 翻转硬币 小明的面前有一块长度为N的正方形棋盘,共有N*N个方格,在棋盘的每个格子上都放有一块硬币,要么正面朝上(以0表示),要么背面朝上(以1表示). 小明可以任意选择一列,将列上的硬币 ...

  3. python图像分类实验总结_图像分类的5种技术,总结并归纳算法、实现方式,并进行实验验证...

    本文为你介绍图像分类的5种技术,总结并归纳算法.实现方式,并进行实验验证. 图像分类问题就是从固定的一组分类中,给输入图像分配标签的任务.这是计算机视觉的核心问题之一,尽管它看似简单,却在实际生活中有 ...

  4. 洛谷——P1146 硬币翻转

    P1146 硬币翻转 题目描述 在桌面上有一排硬币,共NN枚,每一枚硬币均为正面朝上.现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1N−1枚硬币(正面向上的被翻转为反面向上,反之亦然). ...

  5. 洛谷1146 硬币翻转

    题目描述 在桌面上有一排硬币,共NN枚,每一枚硬币均为正面朝上.现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1N−1枚硬币(正面向上的被翻转为反面向上,反之亦然).求一个最短的操作序列( ...

  6. 试题 算法训练 翻转旋转变换

    试题 算法训练 翻转旋转变换 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 现在有一张n行m列的由" ...

  7. 洛谷 P2708 硬币翻转

    P2708 硬币翻转 时间限制1.00s 内存限制125.00MB 题目描述 从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的.正面朝上的用1表示,背面朝上的用0表示.现在要求从这行的第一个硬币 ...

  8. P2708 硬币翻转——题解2020.10.11

    P2708 硬币翻转 思路分析 定义一个一维字符型数组 a[ ] 存放若干硬币的正反情况,'1' 表示正面,'2'表示反面: 进行一次操作允许将前 n 个硬币翻面,要使操作的次数最少,每次操作须只对正 ...

  9. android 硬币翻转动画,使用Android标准动画显示正在翻转的硬币的两面

    我非常接近制作"硬币翻转"动画,但是由于当前动画系统的局限性(错误?) – 我无法找到一种方法来显示硬币在空中翻转的两侧. 例如,我有以下动画.XML: android:share ...

最新文章

  1. 本周Github项目精选:高效CNN推理库、多款AlphaGo实现
  2. [译]2019年修炼前端开发者之路
  3. linux kernel使用技巧
  4. 世界地图20亿像素_高通骁龙690 5G平台发布,支持1.92亿像素性能提升20%
  5. C语言循环求出2的10次幂,C语言求2的100次幂的结果.doc
  6. IDEA : 配置checkstyle
  7. 拓扑之homeomorphic
  8. 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 2
  9. 《软件工程导论》之总体设计
  10. [ZZ]在争议中逐渐成熟 电力线通信填平信息鸿沟
  11. 如何在一个月内高效地备考教师资格证?
  12. matlab两线段的夹角,两条线段的夹角计算
  13. dns服务器 响应超时,DNS 客户端解析超时 - Windows Server | Microsoft Docs
  14. DOTA模式命令详解 及 DotA英雄英文名字和简称
  15. AutoCAD2011官方原版软件下载
  16. Kafka中zookeeper的作用详解(7点)
  17. Word 2016怎么安装公式编辑器
  18. windchill安全标签客制化
  19. swagger使用流程梳理
  20. X86架构与Arm架构区别

热门文章

  1. 题目:以下选项中关于DOM和SAX的说法错误的是()
  2. centos7-登录显示名称及登录欢迎界面设置
  3. 现代IT项目中的需求管理如何做?
  4. js高德地图获取道路信息
  5. 多选框的全选和全不选
  6. 【c语言】一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,问该数是多少?
  7. Java搭建Spark程序,提交到Yarn
  8. Linux环境搭建spark3 yarn模式
  9. POJ 2240 Arbitrage 解题报告
  10. ThingsBoard 使用