C++ 相遇问题

相遇问题

题目描述

小明同学每5天去一次超市,假如在第1天去了超市,那么第6天会再去,小白同学每7天去一次超市,已知小明在第x天去了超市,小白在第y天去了超市,那么第n天的时候,小明和小白是否可以在超市相遇呢?(假设他们只要都去就会相遇)

提示

0<x,y<n<1000

输入格式

一行三个整数,分别是x,y,n

输出格式

如果会相遇输出Yes,否则输出No

样例组输入#1

1 4 11

样例组输出#1

Yes

样例组输入#2

1 4 12

样例组输出#2

No

#include<bits/stdc++.h>
using namespace std;
int main(){
 int x,y,n;
 cin>>x>>y>>n;
 if((n - x)%5 == 0){
   if((n - y)%7 == 0){
     cout<<"Yes";
   }else{
     cout<<"No";
   }
 }else{
   cout<<"No";
 }
 return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
N 皇后问题是一个经典的问题,其目的是在 N×N 的棋盘上放置 N 个皇后,使得每个皇后都不会在同一行、同一列或同一对角线上与其他皇后相遇。本实验将介绍如何使用 C 语言解决 N 皇后问题。 步骤: 1. 定义一个 N×N 的棋盘,用二维数组表示。数组中的每个元素都代表棋盘上的一个方格,0 表示该方格没有皇后,1 表示该方格有皇后。 2. 定义一个函数,用来检查当前位置是否可以放置皇后。该函数需要检查该位置所在的行、列和对角线是否有其他皇后。 3. 定义一个递归函数,用来放置皇后。在递归函数中,首先检查是否已经放置了 N 个皇后,如果是,则找到了一组解。如果没有,则从当前行开始,依次检查每个位置是否可以放置皇后。如果可以,则将皇后放置在该位置,并递归调用函数,继续放置下一个皇后。如果不能放置,则回溯到上一个状态,继续尝试其他位置。 4. 在主函数中调用递归函数,找到所有的解,并打印出来。 代码示例: ```c #include <stdio.h> #define N 8 int board[N][N] = {0}; int check(int row, int col) { int i, j; // 检查所在列是否有皇后 for (i = 0; i < row; i++) { if (board[i][col]) { return 0; } } // 检查左上角是否有皇后 for (i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) { if (board[i][j]) { return 0; } } // 检查右上角是否有皇后 for (i = row - 1, j = col + 1; i >= 0 && j < N; i--, j++) { if (board[i][j]) { return 0; } } return 1; } void solve(int row) { int i, j; if (row == N) { // 找到一组解,打印出来 for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", board[i][j]); } printf("\n"); } printf("\n"); return; } for (j = 0; j < N; j++) { if (check(row, j)) { // 当前位置可以放置皇后 board[row][j] = 1; solve(row + 1); // 回溯到上一个状态 board[row][j] = 0; } } } int main() { solve(0); return 0; } ``` 在上面的代码中,check 函数用来检查当前位置是否可以放置皇后,solve 函数用来递归放置皇后。在主函数中调用 solve 函数,找到所有的解并打印出来。 运行结果: ``` 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 ... 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值