题:有任意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. Nat. Genet. | 基于CRISPRi技术检测增强子与启动子相互作用
  2. 数组作为函数参数进行传递
  3. apache与tomcat的联系
  4. 基于HT for Web的3D拓扑树的实现
  5. 程序员辞职的7个常用理由,你用的是哪一个?
  6. Day47 Django基础部分、路由配置、空间名称
  7. 【u204】高级砝码称重
  8. 取消搜索状态_百度搜索引擎全网推广通常有哪些账户?
  9. MATLAB图形插入标题
  10. shell date cal
  11. Sklearn——用Sklearn实现线性回归(LinearRegression)
  12. 几个C#控件出现闪烁的问题的解决方案(转)
  13. 线性调频信号(Chirp信号)公式
  14. 百度云云盘搜索助手可查询提取码 内置5个搜索引擎
  15. c计算机软考中级考什么,计算机软考中级考试内容
  16. 二、ArcGIS中shp裁剪dem
  17. 西安邮电大学计算机学院教师,西安邮电大学计算机学院
  18. HTML源码大放送1
  19. php normalize,normalize函数怎么使用
  20. c语言中puts的作用,puts和fputs函数及其区别,C语言puts和fputs函数详解

热门文章

  1. Tree Map:树状图——绘制COVID-19阵列图
  2. USB HUB芯片 FE8.1替代方案
  3. nexus安装 及配置阿里云代理
  4. 辅城坳科目三路线口诀
  5. paddlepaddle框架小白入门级指南
  6. 一体化红外接收头有两种
  7. 2021-08-02Jxl使用
  8. MySQL数据库机器配置的3个网络参数
  9. 筛选服务器连接暂时不可用,某个自定义筛选器或模块khy-016(如 URLScan)限制了对该文件的访问...
  10. matlab 中的 yalmip安装方法