【叉积】【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,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...
随机推荐
- C++内存分配方式
参考:http://www.cnblogs.com/daocaoren/archive/2011/06/29/2092957.html http://www.cnblogs.com/skydesign ...
- Android的一种MVP模式框架
今天给大家分享的是一种将view的初始化和逻辑与activity分离的架构,采用的是mvp模式.但令人遗憾的是,这仅仅是一个新的思路,我在实际使用中发现其并不能完全将UI逻辑与activity分开,所 ...
- django xadmin 模板的定制
编辑新增等页面对应的modelform为ModelFormAdminView (xadmin.views.edit.ModelFormAdminView) 通过源码分析,新增对象的template属性 ...
- HTML页面的布局
1.纵向切分页面:CSS POSITION的默认值为:STATIC 1) <html> <head> <title>Hello</title> < ...
- 【GoLang】转载:我为什么放弃Go语言,哈哈
我为什么放弃Go语言 作者:庄晓立(Liigo) 日期:2014年3月 原创链接:http://blog.csdn.NET/liigo/article/details/23699459 转载请注明出处 ...
- (转) C#如何使用异步编程
怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法.委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用. 异步有三种 ...
- Qt 对话框显示控制按钮
在对话框窗体构造函数加入 SystemDialog::SystemDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SystemDialog) ...
- 20145213《Java程序设计》第五周学习总结
20145213<Java程序设计>第五周学习总结 教材学习内容总结 "素衣莫起风尘叹,犹及清明可到家."每每念此,不得不心疼自己.古人清明长假都进城耍了,还担心自己清 ...
- IOS- 单例
单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...
- 瀑布流图片自动式 masonry
<script type="text/javascript" src="<?php echo FRONT_PUBLIC;?>js/jquery-1.8. ...