在C++中判断是否可以旋转页面


在这个问题中,我们得到了页面上三个点的坐标。我们的任务是 *判断是否可以旋转页面*。

 

页面的旋转方式是:'x'的新位置是'y'的旧位置,'y'的新位置是'z'的旧位置。根据旋转结果打印“Yes”或“No”。

让我们通过一个例子来理解这个问题:

输入:x = (0, 1), y = (1, 0), z = (0, -1)

输出:Yes

解释


我们可以将页面旋转90o

解决方案:

如果满足某些条件,我们就可以旋转页面。

如果 *x和y之间的距离* 等于 *y和z之间的距离*,则可以旋转。此外,如果所有点都在同一条直线上,则无法旋转。

程序演示了我们解决方案的工作原理:

示例

在线演示

#include<bits/stdc++.h>
using namespace std;

int possibleOrNot(int coordinates[3][2]){
   
   long long dis1 = pow(coordinates[1][0] - coordinates[0][0], 2) + pow(coordinates[1][1] - coordinates[0][1], 2);
   long long dis2 = pow(coordinates[2][0] - coordinates[1][0], 2) + pow(coordinates[2][1] - coordinates[1][1], 2);

   if(dis1 != dis2)
      return 0;
   else if (coordinates[1][0] == ((coordinates[0][0] + coordinates[2][0]) / 2.0) &amp;&amp; coordinates[1][1] == ((coordinates[0][1] + coordinates[2][1]) / 2.0))
      return 0;
   else
      return 1;
}

int main() {
   
   int coordinates[3][2] = {{0 , 1}, {1 , 0}, {0, -1} } ;
   if ( possibleOrNot(coordinates))
      cout<<"The rotation of page is possible";
   else
      cout<<"The rotation of page is not possible";
   
   return 0;
}

输出

The rotation of page is possible

更新于:2021年1月22日

66 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告