NEXT PERMUTATION

In the way of programming there is some problems on thye basis of finding the permutation. Today I am giving a sample to create all permutations of an string.


// next_permutation
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>

using namespace std;

int main () {

int n,i,l;
char myints[1000];

gets(myints);
l=strlen(myints);
sort (myints,myints+l);

do {
cout << myints<< endl;
} while ( next_permutation (myints,myints+l) );

return 0;
}

A brief collection of STL

STL stands for STANDARD TEMPLATE LIBRARY in C++ which makes the programmer’s job too easier. STL decreases the coding size as well as the coding time. In programming , using STL is preferred by an C programmer.
Here I am giving a description of STL frequently used by us.

Frequently used container classes of STL :
1. vector
2. queue
3. string
4. stack
5. map
6. list
7. set
8. pair

Vector class:
A vector models a dynamic array. Thus, it is an abstraction that manages its elements with a dynamic array.However, note that the standard does not specify that the implementation use a dynamic array. Rather, it follows from the constraints and specification of the complexity of its operation.

To use a vector we must include
[code]
#include <vector>
Using namespace std;[/code]

Declaration :
[code]Vector<datatype> c;[/code]
//Elem refers to all kind of data types like int,float,char,double,string,struct,class,pair etc.

All functions of vector class :
*vector c // Creates an empty vector without any elements
*vector c1(c2) // Creates a copy of another vector of the same type (all elements are copied)
*vector c(n) // Creates a vector with n elements that are created by the default constructor
*vector c(n,elem) //Creates a vector initialized with n copies of element elem
*vector c(beg,end) //Creates a vector initialized with the elements of the range [beg,end)
*c.~vector() //Destroys all elements and frees the memory
*c.size() //Returns the actual number of elements
*c.max_size() //Returns the maximum number of elements possible
*capacity() //Returns the maximum possible number of elements without reallocation
*reserve() //Enlarges capacity, if not enough yet
*c1 == c2 //Returns whether c1 is equal to c2
*c1 = c2 //Assigns all elements of c2 to c1
*c.assign(beg,end) //Assigns the elements of the range [beg,end)
*c1.swap(c2) //Swaps the data of c1 and c2
*swap(c1,c2) // Same (as global function)
*c.at(idx) //Returns the element with index idx (throws range error exception if idx is out of range)
*c[idx] //Returns the element with index idx (no range checking)
*c.front() //Returns the first element (no check whether a first element exists)
*c.back() //Returns the last element (no check whether a last element exists)
*c.insert(pos,elem) /*Inserts at iterator position pos a copy of elem and returns the position of the new element*/
*c.insert(pos,n,elem) //Inserts at iterator position pos n copies of elem (returns nothing)
*c.insert(pos,beg,end) /*Inserts at iterator position pos a copy of all elements of the range [beg,end) (returns nothing)*/
*c.insert(pos,beg,end) /*Inserts at iterator position pos a copy of all elements of the range [beg,end) (returns nothing)*/
*c.push_back(elem) //Appends a copy of elem at the end
*c.pop_back() //Removes the last element (does not return it)
*c.resize(num) /*Changes the number of elements to num (if size() grows, new elements are created by their default constructor)*/
*c.resize(num,elem) // Changes the number of elements to num (if size() grows, new elements are copies of elem)
*c.clear() //Removes all elements (makes the container empty)

An example:
[code]
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int main()
{

//create empty vector for strings
vector<string> sentence;

//reserve memory for five elements to avoid reallocation
sentence.reserve(5);

//append some elements
sentence.push_back("Hello,");
sentence.push_back("how");
sentence.push_back("are");
sentence.push_back("you");
sentence.push_back("?");

//print elements separated with spaces
copy (sentence.begin(), sentence.end(),
ostream_iterator<string>(cout," "));
cout << endl;

//print ”technical data”
cout << " max_size(): " << sentence.max_size() << endl;
cout << " size(): " << sentence.size() << endl;
cout << " capacity(): " << sentence.capacity() << endl;

//swap second and fourth element
swap (sentence[1], sentence [3]);

//insert element "always" before element "?"
sentence.insert (find(sentence.begin(),sentence.end(),"?"),
"always");

//assign "!" to the last element
sentence.back() = "!";

//print elements separated with spaces
copy (sentence.begin(), sentence.end(),
ostream_iterator<string>(cout," "));
cout << endl;

//print "technical data" again
cout << " max_size(): " << sentence.max_size() << endl;
cout << " size(): " << sentence.size() << endl;
cout << " capacity(): " << sentence.capacity() << endl;

}
/*The output of the program might look like this:
Hello, how are you ?
max_size(): 268435455
size(): 5
capacity(): 5
Hello, you are how always !
max_size(): 268435455
size(): 6
capacity(): 10
*/[/code]

queue Class :
queue is one of the data structures that is also called First-in-First-out [FIFO]. In STL there are also some built in functions for implementing queue.

To use queue we must include
[code]#include<queue>
using namespace std;[/code]

Declaration
[code]queue<datatype>name;[/code]

Frequently used functions:
push(value);
front();
pop();
empty();

[The functions defined in Vector class can be used in queue also,check for further]

An example of queue and dequeUva 10935
[code]
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
#include<deque>
using namespace std;

int main(){

int a,b,n,i,k,c;

while(scanf("%d",&n)&&n){
if(n==1){
cout<<"Discarded cards:"<<endl;
cout<<"Remaining card: 1"<<endl;
continue;
}

deque<int>q;
queue<int>q2;

for(i=1;i<=n;i++){
q.push_front(i);
}

do{
k=q.back();
q2.push(k);
q.pop_back();

q.push_front(q.back());
q.pop_back();
}
while(q.size()>1);

c=0;
cout<<"Discarded cards:";
while(!q2.empty()){
cout<<" "<<q2.front();
if(c<n-2)
cout<<",";
c++;
q2.pop();
}

cout<<endl<<"Remaining card:";
while(!q.empty()){
cout<<" "<<q.front()<<endl;
q.pop_front();
}
}
return 0;
}
[/code]

stack Class :
stack is one of the data structures that is also called Last-in-First-out [LIFO]. In STL

To use stack we must include
[code]#include<stack>
using namespace std;[/code]

Declaration
[code]stack<datatype>name;[/code]

Frequently used functions:
push(value);
top();
pop();
empty();
[The functions defined in Vector class can be used in stack also,check for further]
UVA 10420

Connecting with MySQL in JAVA

Sometimes we need to use database(MySQL).So,we must connect our interpreter to the existing MySQl.For this we need JDBC driver to install it.In netbeans IDE jdbc driver is built in.But to make this working, we must have a mysql connector,which is a jar file in our system.

We must download a mysql-connector-java-5.0.8-bin.jar and keep it to
C:Program FilesJavajdk1.6.0_01jrelibext

In java programming, before coding we must established a connection between interpreter and MySQL.

at first we must import some built in packages.they are:
[code]
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;

//now finally in our main job i.e establishing the connection

Connection m_Connection = null;
Statement m_Statement = null;
ResultSet m_ResultSet = null;

String m_Driver ="com.mysql.jdbc.Driver";
String m_Url = "jdbc:mysql://localhost:3306/databasename";

//Loading driver
try {
Class.forName(m_Driver);
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}

String query = "";
try {

//Create connection object
m_Connection = DriverManager.getConnection(m_Url, user, password);

//Create Statement object
m_Statement = m_Connection.createStatement();
query = "SELECT * FROM ";
query+=tablename;

//Execute the query
m_ResultSet = m_Statement.executeQuery(query);
String s,t="";

//Loop through the results
while (m_ResultSet.next()) {

s=m_ResultSet.getString(1); //here 1 means value of first coloumn

}//end for while loop

}
catch (SQLException ex) {
ex.printStackTrace();
System.out.println(query);

}
catch (Exception e) {
System.err.println("Error: " + e.getMessage());

}

finally {

try {
if (m_ResultSet != null)
m_ResultSet.close();
if (m_Statement != null)
m_Statement.close();
if (m_Connection != null)
m_Connection.close();
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
[/code]

Bookmarks in Browser

বিভিন্ন প্রয়জনে আমাদের পিসিতে একের অধিক ব্রাউজার ব্যবহার করতে হয়। কিন্তু এক ব্রাউজারে কোন পেইজ বুকমার্ক করে রাখলে তা অন্য ব্রাউজারে পাওয়া যায় না। তাই আমাদের অনেক জামেলা করতে হয় একই ব্রাউজারে থেকে অন্য ব্রাউজারের বুকমার্ক দেখতে।

কিন্তু আজকে আমি আপনাদের যে সফটওয়্যারের কথা জানাবো তা দিয়ে খুব সহজেই আপনার ব্রাউজারে বুকমার্ক করা সাইট গুলো এক ব্রাউজার থেকে অন্য ব্রাউজারে কনভার্ট করতে পারবেন। যার কারনে সব ব্রাউজারেই আপনি একরকম বুকমার্ক পাবেন। অর্থাৎ বুকমার্ক এর জন্য বার বার আপনার প্রিয় ব্রাউজারের পিছনে ছুটতে হবে না।

মানে এক কথায় আপনার বুকমার্ক লিস্ট সব ব্রাউজারেই এক থাকবে। এমনকি এই সফটওয়্যারের মাধ্যমে বুকমার্ক গুলো আপনার কম্পিউটারে সেভ করে রাখতে পারবেন। ফলে কম্পিউটার বুট করলেও হারাবেনা আপনার বুকমার্ক। বুট করার পর সহজেই রিস্টোর করতে পারবেম আপনার বুকমার্ক গুলো। ব্যবহার করা খুব সহজ তাই আর বিস্তারিত বললাম না।
যে যে ব্রাউজার সাপোর্ট করেঃ
Google Chrome
Mozilla Firefox
Microsoft Internet Explorer
Opera
Apple Safari
Chromium and
Flock.

DownloadFrom here

Reference::

Sending mail from php

Today I am going to post a simple method to send mail from php code.To this we must use SMTP [Simple Mail Transfer protocol]which uses default port that is 25.Before sending mail,SMTP server name must be included in php.ini .To make our job easier I will use three php files.
They are
01: SMTPconfig.php
02: SMTPclass.php
03: index.php

01: SMTPconfig.php

//Server Address
$SmtpServer=”gmail.com”;
$SmtpPort=”25″; //default
$SmtpUser=”yourgmailid@gmail.com”;
$SmtpPass=”yourgmailpassword”;

Here,SMTP server setup is completed.

02: SMTPclass.php

class SMTPClient
{

function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body)
{

$this->SmtpServer = $SmtpServer;
$this->SmtpUser = base64_encode ($SmtpUser);
$this->SmtpPass = base64_encode ($SmtpPass);
$this->from = $from;
$this->to = $to;
$this->subject = $subject;
$this->body = $body;

if ($SmtpPort == “”)
{
$this->PortSMTP = 25;
}
else
{
$this->PortSMTP = $SmtpPort;
}
}

function SendMail ()
{
if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
{
fputs ($SMTPIN, “EHLO “.$HTTP_HOST.”rn”);
$talk[“hello”] = fgets ( $SMTPIN, 1024 );
fputs($SMTPIN, “auth loginrn”);
$talk[“res”]=fgets($SMTPIN,1024);
fputs($SMTPIN, $this->SmtpUser.”rn”);
$talk[“user”]=fgets($SMTPIN,1024);
fputs($SMTPIN, $this->SmtpPass.”rn”);
$talk[“pass”]=fgets($SMTPIN,256);
fputs ($SMTPIN, “MAIL FROM: from.”>rn”);
$talk[“From”] = fgets ( $SMTPIN, 1024 );
fputs ($SMTPIN, “RCPT TO: to.”>rn”);
$talk[“To”] = fgets ($SMTPIN, 1024);
fputs($SMTPIN, “DATArn”);
$talk[“data”]=fgets( $SMTPIN,1024 );
fputs($SMTPIN, “To: to.”>rnFrom: from.”>rnSubject:”.$this->subject.”rnrnrn”.$this->body.”rn.rn”);
$talk[“send”]=fgets($SMTPIN,256);
//CLOSE CONNECTION AND EXIT …
fputs ($SMTPIN, “QUITrn”);
fclose($SMTPIN);
//
}
return $talk;
}
}
/////////////////////////////////

03: index.php

include(‘SMTPconfig.php’);
include(‘SMTPClass.php’);
if($_SERVER[“REQUEST_METHOD”] == “POST”)
{
$to = “to_mailid”;
$from = “from_mailid”;
$subject = “subject”;
$body = “message”;
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
$SMTPChat = $SMTPMail->SendMail();
}

Thanks for visiting this…
For more info Click Here

JAVA in online programming [Uva]

Sometimes we try to use Java in online programming like Uva.Though it is bad in Uva,some programmers think that it is helpful to use Java in contests.

We know that Java support in the judge is bad. But if you want to try it, take this considerations into account.

The Java programs submitted must be in a single source code (not .class) file. Really, they are compiled and run as native applications using the gcj compiler. They must read and write the standard input/output, as the other languajes. Note that java::io use is restricted; this implies that some features (for example, to create a DataInputStream variable with System.in as argument, in order to use readLine to read strings from the standard input) are not available. Also, network and other functions are not allowed. Threads are also not ready. However, methods from math, util and some other common packages are authorized. If you find any useful function for a scientific program not available, please contact Uva about it.

I am posting here my code of Uva 10055 so that you can get an idea about submitting solutions using java…


// import ::io is restricted

import java.util.*;

class Main //class name must be Main and non-public
{
public static void main(String[] a){
long hn,mn;

Scanner s=new Scanner(System.in);

while(s.hasNext()){
hn=s.nextLong();
mn=s.nextLong();

if( hn<mn )
System.out.println(""+(mn-hn));
else
System.out.println(""+(hn-mn));
}
}
}

Edit Distance

When a spell checker encounters a possible misspelling, it looks in its dictionary for other words that are close by. What is the appropriate notion of closeness in this case?
A natural measure of the distance between two strings is the extent to which they can be aligned, or matched up. Technically, an alignment is simply a way of writing the strings one above the other. For instance, here are two possible alignments of SNOWY and SUNNY:

S _ N O W Y
S U N N _ Y
Cost: 3

_ S N O W _ Y
S U N _ _ N Y
cost: 5

The edit distance between two strings is the cost of their best possible alignment. Do you see that there is no better alignment of SNOWY and SUNNY than the one shown here with a cost of 3?

Edit distance is so named because it can also be thought of as the minimum number of
edits- insertions, deletions, and substitutions of characters-needed to transform the first
string into the second. For instance, the alignment shown on the left corresponds to three
edits: insert U, substitute O ! N, and delete W.

When solving a problem by dynamic programming, the most crucial question is, What are the
subproblems? It is an easy matter to write down the algorithm: iteratively solve one subproblem after the other, in order of increasing size.
Our goal is to fnd the edit distance between two strings x[1….m] and y[1….n].

Let, an example
E X P O T E N T I A L
P O L Y N O M I A L

we have to find the minimum number of operation to convert them from one to another.
For this to work, we need to somehow express E(i; j) in terms of smaller subproblems.
Let’s see-what do we know about the best alignment between x[1…..i] and y[1….j]? Well, its
rightmost column can only be one of three things:
x[i] or _ or x[i]
_ y[j] y[j]

But this is exactly the subproblem E(i-1; j)! We seem to be getting somewhere. In the second case, also with cost 1, we still need to align x[1….i] with y[1….j-1]. This is again another subproblem, E(i; j-1). And in the final case, which either costs 1 (if x[i] != y[j]) or 0 (if x[i] = y[j]), what’s left is the subproblem E(i-1;j-1). In short, we have expressed E(i; j) in terms of three smaller subproblems E(i-1; j), E(i; j-1), E(i-1;j-1). We have no idea which of them is the right one, so we need to try them all and pick the best:
E(i; j) = min{1 + E(i – 1; j); 1 + E(i; j – 1); diff(i; j) + E(i – 1; j – 1)};
where for convenience diff(i; j) is defined to be 0 if x[i] = y[j] and 1 otherwise.

For instance, in computing the edit distance between EXPONENTIAL and POLYNOMIAL,
subproblem E(4; 3) corresponds to the prefixes EXPO and POL. The rightmost column of their
best alignment must be one of the following:
O _ O
_ L L

Thus, E(4; 3) = min{1 + E(3; 3); 1 + E(4; 2); 1 + E(3; 2)}.

So,the psudocode:
Here, m is the number of letters in POLYNOMIAL and n is the number of EXPONENTIAL
[code]
for i = 0; 1; 2; : : : ;m:
E(i; 0) = i
for j = 1; 2; : : : ; n:
E(0; j) = j
for i = 1; 2; : : : ;m:
for j = 1; 2; : : : ; n:
E(i; j) = min{E(i – 1; j) + 1;E(i; j – 1) + 1;E(i – 1; j – 1) + diff(i; j)}
return E(m; n)
[/code]

And in our example, the edit distance turns out to be 6:
E X P O N E N _ T I A L
_ _ P O L Y N O M I A L

Big Number problem in JAVA in programming contest

Bignumber problem can be solved easily using BigInteger class in java.Here is a sample for doing this….
[code]
import java.math.BigInteger;

public class BIG
{
public static void main(String[] args)
{
//initialization
BigInteger N1 = new BigInteger ("1000000000000000000");
BigInteger N2 = new BigInteger ("123456789123");
BigInteger N3 = new BigInteger ("50000000000");
//Math operations
BigInteger mult = N1.multiply(N2); //This is how to send arguments in bigint functions
BigInteger add = N1.add(N2);
BigInteger div= N1.divide(N2);
BigInteger substract1 = N1.subtract(N2); //N1-N2
BigInteger substract2 = N2.subtract(N1); //N2-N1
BigInteger gcd = N1.gcd(N3);
//Printing output
System.out.println("Mult " + mult);
System.out.println("add " + add);
System.out.println("div " + div);
System.out.println("substract1 " + substract1);
System.out.println("substract2 " + substract2);
System.out.println("gcd N1 N3 " + gcd);
}
}
[/code]
There are some more built in functions:

BigInteger.ONE; (==1)
BigInteger.ZERO;(==0)
A.abs();
A.add(N);
A.divide(N);
A.divideAndRemainder(N); (returns an array)
A.max(N);
A.min(N);
A.mod(N);
A.multiply(N);
A.remainder(N);
A.signum(N);

A.doubleValue();
A.floatValue();
A.intValue();
A.longValue();
A.toString();
A.compareTo(N)

converting an integer to bigint
BigInteger A = BigInteger.valueOf(20000);
You can take input using scanner just as you input int,long etc.