【叉积】【sdut 2508 图形密码】
图形密码
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2508
输入
输出
示例输入
3
5
1 1 2 1 3 1 3 2 3 3
8
1 1 1 2 1 3 2 3 3 3 3 2 3 1 2 1
7
1 1 1 2 1 3 2 2 3 1 3 2 3 3
示例输出
counterclockwise
clockwise
clockwise (3,1) counterclockwise
提示
来源
示例程序
解题思路:
用叉积判断当前的旋转方向,我用flag1保存前一个状态,用flag2表示当前的状态,那么当flag1!=flag2的时候,表明现在的方向发生了改变(flag1!=-1&&flag2!=0,原因是flag1=-1表示是初始状态,这时候flag2是什么状态都不影响;如果flag2=0,那么表示当前无变化,flag1是什么状态都不影响),用1表示顺时针旋转的状态,用2表示逆时针旋转状态,用0表示无变化,特别的,初始化flag1=-1不代表任何状态(初始状态,可以认为是顺时针也可以是逆时针,当输入一组数据的时候结果无论是顺时针还是逆时针都算对,因为只有一组数据是无法判断是顺时针还是逆时针的),注意叉积的计算公式和谁在前谁在后,这是影响题目结果的核心问题。
叉积详解:http://blog.csdn.net/william001zs/article/details/6213485
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int zong;
cin>>zong;
while(zong--)
{
int n;
int flag1=-;//保存前一个状态的标志变量
cin>>n;
int x[],y[];
for(int i=;i<=n;i++)
{
cin>>x[i];
cin>>y[i];
}
for(int i=;i<=n-;i++)
{
int flag2=;
int x1=x[i-]-x[i];
int y1=y[i-]-y[i];
int x2=x[i+]-x[i];
int y2=y[i+]-y[i];
if(x1*y2-x2*y1>)
flag2=;//顺时针旋转
else if(x1*y2-x2*y1<)
flag2=;//逆时针旋转
else
flag2=;//平行不旋转
if(flag1==-&&flag2!=)//如果发生了旋转事件就以此状态初始化flag1,这条语句只执行一次
flag1=flag2;
if(flag1!=-&&flag2!=&&flag1!=flag2)//这三个条件缺一不可
{
if(flag1==)//前一个状态是顺时针旋转
{
cout<<"clockwise ("<<x[i]<<","<<y[i]<<") ";
}
else if(flag1==)//前一个状态是逆时针旋转
{
cout<<"counterclockwise ("<<x[i]<<","<<y[i]<<") ";
}
flag1=flag2;//用flag1保存改变以后的状态
}
}
if(flag1==)//最后的状态是顺时针旋转
{
cout<<"clockwise"<<endl;
}
else//最后的状态是逆时针旋转,无论flag1是-1(n==0)还是flag1==2(最后真的是逆时针旋转了)或者是flag==0(平行不旋转的情况,比如n==2,输入 1 1 1 2)
cout<<"counterclockwise"<<endl;
}
return ;
}
【叉积】【sdut 2508 图形密码】的更多相关文章
- python2.7写的图形密码生成器
#coding:utf8import random,wxdef password(event): a = [chr(i) for i in range(97,123)] b = [chr(i) for ...
- CTF中的一些图形密码
1.传统猪圈密码 猪圈密码又称为亦称朱高密码.共济会暗号.共济会密码或共济会员密码:是一种以特定符号来替换字母的加密方式 在线解密网址:http://moersima.00cha.net/zhuqua ...
- 破解android手机图形锁
安卓手机的图形锁包括3*3,4*4,5*5的点阵,按次序连接数个点从而达到锁定/解锁的功能.以3*3为例,最少需要连接4个点,最多能连接9个点.在我们进行绘制图形的过程中,每选中这9个点中的一个点,实 ...
- Android手势密码实现
图 二.实现思路: 1. 正上方的提示区域,用一个类(LockIndicator.java)来实现,自定义view来绘制9个提示图标: 2. 手势密码绘制区域,用一个类(GestureContentV ...
- iPhone手机安全指南
摘要:iPhone手机安全指南 - 1.iPhone解锁使用指纹:2.启用“查找我的iPhone”功能:3.Apple ID启用两步验证:4.修改SIM卡PIN码.5.iPhone被盗或丢失后,登录i ...
- Linux运维初级教程(一)Shell脚本
序,掌握shell脚本是linux运维工程师的最基础技能. 一.脚本语言 与高级语言不通,脚本语言运行时需要调用相应的解释器来翻译脚本中的内容. 常见的脚本语言有Shell脚本.Python脚本.ph ...
- fiddler抓手机报文的配置指南
前言 1.fiddler大名鼎鼎的抓包工具,而且支持重发,自动解码报文之类. 2.做爬虫时经常遇到需要抓移动端(手机/pad等)报文的情况. 网上各种资料比较,下面这篇是最准确的,转载自csdn:ht ...
- jquery中$.each()的用法
each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象.数组的属性值并进行处理.jQuery和jQuery对象都实 现了该方法,对于jQuery对象,只是把each方法简单 ...
- Google Nexus 5x Android 7.0 Root
很久没有写东西了,准备重新养成这个好习惯.因为自己一直在用Nexus,前段时间自己的Nexus5老的不行了,所以买了台5x,一直没时间root,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...
随机推荐
- [翻译]opengl扩展教程2
[翻译]opengl扩展教程2 原文地址https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/extensions_part2.php [ ...
- 再谈Weiphp公众平台开发——1、增加插件
去年开始接触基于Weiphp的公众平台开发,一直没时间好好整理一下. 下面开始讲解第一个自定义weiphp插件:MyHello的开发流程. 1.插件创建.在weiphp管理后台依次点击“插件管理-&g ...
- 5.5---整数A转成整数B(CC150)
自己的: public static int calcCost(int A,int B){ int ans = 1; int temp = A ^ B; while(temp != 1){ if(te ...
- php 通过API接口连接12306余票查询
<?php header("content-type:text/html;charset='utf-8'"); //设置编码 echo "<meta cont ...
- HTML锚点参考II
锚点使用:<a href="#a">会直接找到id为a的元素的位置,不需要其他设置.如此简单! <a href="#a"> <li ...
- 学习Selenium2Library的好例子
最近好几个人问我有没有好的例子可以帮助学习Selenium2Library怎么用.对于公司同事,可以把脚本直接给过去,其他人则不行了.所以一直想做一个好的学习样例,这个样例应该有如下特性: 能够非常好 ...
- [猜数字]把两个数和告诉A,积告诉B,求这两个数是什么
1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 分析: 设和为S,积为M. 首先,A:我不知道. 说明:S可以分解成多个 ...
- ios 在中国地区,24小时时间格式 系统设定下 获得12小时制时间的方法
如题,在中国地区,24小时时间格式 系统设定下,如果单单使用 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 之后,无论用hh ...
- c# 获取系统版本,获取net framework 版本(Environment 类)
1.获取当前操作系统版本信息 使用Environment.OSVersion 属性 获取包含当前平台标识符和版本号的 OperatingSystem 对象. 命名空间: System程序集: ms ...
- ItemsSource绑定后ScrollViewer不复位
ItemsSource绑定后ScrollViewer不复位 ItemsSource绑定后ScrollViewer不复位,有的时候我们需要这一效果,但大多数情况下我们是想让它复位的. 在WPF中也有这个 ...